URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 71109
[ Назад ]

Исходное сообщение
"Как перекодировать имена файлов из CP1251 в UTF-8"

Отправлено Droopy , 21-Дек-06 17:01 
Проблема вот в чем:

linux, debian.
раньше в системе основной локалью была CP1251, теперь я перешел на UTF-8.
В системе есть дисковый раздел с файловой системой reiserfs на которой хранится много файлов. Так вот, бытностью CP1251 там было создано много файлов с русскими именами в CP1251 кодировке. При смене локали на UTF-8 все эти имена отобразились как ????????.
Даже если файловую систему просматривать через броузер с выставленной кодировкой CP1251 всё равно имена файлов - ?????. Как можно перекодировать эти ???? в нормальные русские UTF-8.


Содержание

Сообщения в этом обсуждении
"Как перекодировать имена файлов из CP1251 в UTF-8"
Отправлено anonymous , 21-Дек-06 17:08 
http://www.linux.org.ru/books/lor-faq/lorFAQ-16.html#ss16.14

"Как перекодировать имена файлов из CP1251 в UTF-8"
Отправлено Droopy , 21-Дек-06 18:31 
>http://www.linux.org.ru/books/lor-faq/lorFAQ-16.html#ss16.14


запускаю :
convmv --notest -f cp1251 -t utf8 -r --qfrom --qto path/to/files

и не фига, как были ??? так и остались


"Как перекодировать имена файлов из CP1251 в UTF-8"
Отправлено ivan , 29-Дек-06 14:26 
>>http://www.linux.org.ru/books/lor-faq/lorFAQ-16.html#ss16.14
>
>
>запускаю :
> convmv --notest -f cp1251 -t utf8 -r --qfrom --qto path/to/files
>
>и не фига, как были ??? так и остались

Попробуй:
http://linux.alhimia.ru/projects/bash-scripts/NLS_repair/
Мне помогло...


"Как перекодировать имена файлов из CP1251 в UTF-8"
Отправлено kvasik , 24-Июн-12 20:14 
# cd /usr/ports/converters/convmv
# make all install clean

# convmv
su: /usr/local/bin/convmv: /usr/bin/perl: плохой интерпретатор: No such file or directory
# ln -s /usr/local/bin/perl /usr/bin/perl

Список кодировок:
# convmv --list

Итак, посмотрим на что способен:
# convmv -f cp1251 -t utf8 ./*
Starting a dry run without changes...
mv "./----- ----- MySQL specialist.ru"  "./Видео курсы MySQL specialist.ru"

Теперь с реальными изменениями:
# convmv -f cp1251 -t utf8 ./* --notest -r


"Как перекодировать имена файлов из CP1251 в UTF-8"
Отправлено AvdeevValentin , 11-Апр-13 19:43 
>[оверквотинг удален]
> su: /usr/local/bin/convmv: /usr/bin/perl: плохой интерпретатор: No such file or directory
> # ln -s /usr/local/bin/perl /usr/bin/perl
> Список кодировок:
> # convmv --list
> Итак, посмотрим на что способен:
> # convmv -f cp1251 -t utf8 ./*
> Starting a dry run without changes...
> mv "./----- ----- MySQL specialist.ru"  "./Видео курсы MySQL specialist.ru"
> Теперь с реальными изменениями:
> # convmv -f cp1251 -t utf8 ./* --notest -r

Уважаемые! Делаю так как пишете но все равно остаются ???? Хотя ....
convmv -f CP1251 -t UTF-8 * -r
Your Perl version has fleas #37757 #49830
Starting a dry run without changes...
Skipping, already UTF-8: ./Исполнитель(кириллица)-Название файла(кириллица).mp3
No changes to your files done. Use --notest to finally rename the files.
И с --notest то же самое(((


"Как перекодировать имена файлов из CP1251 в UTF-8"
Отправлено Анатолий , 23-Авг-18 04:52 
>>>http://www.linux.org.ru/books/lor-faq/lorFAQ-16.html#ss16.14
>>
>>
>>запускаю :
>> convmv --notest -f cp1251 -t utf8 -r --qfrom --qto path/to/files
>>
>>и не фига, как были ??? так и остались
> Попробуй:
> http://linux.alhimia.ru/projects/bash-scripts/NLS_repair/
> Мне помогло...

Ситуация возникает нередко, но чаще всего когда вы на на ХР и системная кодировка стоит не CP1251. Если нет, то и проблем нет. Работайте в CP1251 и будет вам счастье! Это собственно проблема utf-8. Сейчас всем её навязывают, все современные Оси винда или линукс в качестве системной используют utf-8. Ну и например вы закачиваете архивы файлов из нета, а в архиве имена в CP1251. Распаковывает она как есть. Но ваши файловые обозреватели видят всё в utf-8. Ну и вы собственно намерены дальше использовать эти файлы в системе с utf-8. Что сделал я? Распаковал под ХР(для гарантии не испортить имена) потом вернулся в свою Leap 15, там вот такая билиберда и запустил утилиту. Вначале не вышло. Ну потому что у меня стояла кодировка терминала CP1251. Я поменял её на utf-8(у меня konsole это легко сделать) и ещё раз запустил. И Ба всё получилось... Ни один символ не исказился. Я проверил имена те же, но в др кодировке. А вообще рекомендую использовать ascii-7(первую половину таблицы, она во всех ASCII кодировках и utf-8 одинакова).