#1
|
|||
|
|||
файлы с русскими именами
Vassily Kiryanov написал(а) к All в Jan 15 17:35:56 по местному времени:
Нi All! Кто как файлы с русскими именами архивирует/восстанавливает? А то тащил tar-ом со старой 8.2 на новую 10.1 - побились имена. Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго. Vassily --- |
#2
|
|||
|
|||
Re: файлы с русскими именами
Eugene Grosbein написал(а) к Vassily Kiryanov в Jan 15 20:40:29 по местному времени:
14 янв 2015, среда, в 18:35 NOVT, Vassily Kiryanov написал(а): VK> Кто как файлы с русскими именами архивирует/восстанавливает? А то тащил tar-ом VK> со старой 8.2 на новую 10.1 - побились имена. Сомневаюсь насчёт "побились". Скорее всего, у тебя на 8.2 имена были в кодировке KOI8-R, так и развернулись из архива, а на десятке локаль поди у тебя UTF-8. А перекодирования в tar никакого нет. Eugene -- Прекрасны тонко отшлифованная драгоценность; победитель, раненный в бою; слон во время течки; река, высыхающая зимой; луна на исходе; юная женщина, изнуренная наслаждением, и даятель, отдавший все нищим. (Дхарма) --- slrn/1.0.1 (FreeBSD) |
#3
|
|||
|
|||
файлы с русскими именами
Vova Uralsky написал(а) к Vassily Kiryanov в Jan 15 15:03:38 по местному времени:
Нello Vassily! 14 Jan 15 17:35, Vassily Kiryanov wrote to All: VK> Кто как файлы с русскими именами архивирует/восстанавливает? А то VK> тащил tar-ом со старой 8.2 на новую 10.1 - побились имена. locale не совпал? $ export LCALL=ruRU.UTF-8 $ touch папауваси $ ls папауваси $ export LC_ALL=C $ ls ?????????????????? $ Regards, Vova --- Msged/BSD 6.2.0 |
#4
|
|||
|
|||
файлы с русскими именами
Vassily Kiryanov написал(а) к Vova Uralsky в Jan 15 13:13:19 по местному времени:
Нi Vova! 14 Jan 15 15:03, Vova Uralsky wrote to Vassily Kiryanov: VK>> Кто как файлы с русскими именами архивирует/восстанавливает? А то VK>> тащил tar-ом со старой 8.2 на новую 10.1 - побились имена. VU> locale не совпал? VU> $ export LCALL=ruRU.UTF-8 VU> $ touch папауваси VU> $ ls VU> папауваси VU> $ export LC_ALL=C VU> $ ls VU> ?????????????????? VU> $ Спасибо, ты указал мне путь и сподвиг меня на исследования. Общий итог - раскрывать tar-архивы, в которых кодировка имён файлов не UTF-8, лучше всего при помощи MidnightCommander. Подробности, если интересно, в моём следующем письме к EG. Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго. Vassily --- |
#5
|
|||
|
|||
файлы с русскими именами
Vassily Kiryanov написал(а) к eugen@grosbein.net в Jan 15 13:34:14 по местному времени:
Нi eugen@grosbein.net! 14 Jan 15 20:40, Eugene Grosbein wrote to Vassily Kiryanov: VK>> Кто как файлы с русскими именами архивирует/восстанавливает? А то VK>> тащил tar-ом со старой 8.2 на новую 10.1 - побились имена. EG> Сомневаюсь насчёт "побились". Скорее всего, у тебя на 8.2 имена были EG> в кодировке KOI8-R, так и развернулись из архива, а на десятке локаль EG> поди у тебя UTF-8. А перекодирования в tar никакого нет. Создал из папки с русскими именами пять tar-архивов, в четырёх случаях перед вызовом "tar -c" присутствовала одна из строчек #export LCALL=ruRU.UTF-8 #export LC_ALL=C #export LCALL=ruRU.KOI8-R #export LCALL=ruRU.CP1251 а в пятом случае ни одной переменной "LC_*" не было. Из всех пяти архивов у четырёх, которые не UTF-8, совпали md5-суммы. Т.е. для tar указание любой восьмибитной кодировки имён файлов равносильно её неуказанию, влияние оказывает только указание многобайтной кодировки, хотя из них я и проверил только лишь UTF-8. Потом я оба [отличающихся] tar-файла проверял уже на распаковку (tar-ом) под 10.1 и смотрел, что будет с именами, тоже пытаясь задавать разные LCALL. Как и следовало ожидать, имена файлов не искорёжились только если и при упаковке и при распаковке перед вызовом tar стояла строка "export LC_ALL=ruRU.UTF-8". Но это ладно, это неудивительно. Странно другое, мне удалось распаковать test.tar с 8-ми битной кодировкой имён, сохранив имена в порядке, если я распаковывал их не tar-ом, а копированием из-под MidnightCommander. Вот это уже меня удивило не на шутку. Значит информация о русских именах в каком-то более-менее пристойном виде сохраняется и в однобайтной (непонятно какой) кодировке, просто tar её извлечь не может. Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго. Vassily --- |
#6
|
|||
|
|||
Re: файлы с русскими именами
Eugene Grosbein написал(а) к Vassily Kiryanov в Jan 15 17:23:18 по местному времени:
15 янв 2015, четверг, в 14:34 NOVT, Vassily Kiryanov написал(а): EG>> Сомневаюсь насчёт "побились". Скорее всего, у тебя на 8.2 имена были EG>> в кодировке KOI8-R, так и развернулись из архива, а на десятке локаль EG>> поди у тебя UTF-8. А перекодирования в tar никакого нет. VK> Создал из папки с русскими именами пять tar-архивов, в четырёх случаях перед VK> вызовом "tar -c" присутствовала одна из строчек VK> #export LCALL=ruRU.UTF-8 VK> #export LC_ALL=C VK> #export LCALL=ruRU.KOI8-R VK> #export LCALL=ruRU.CP1251 VK> а в пятом случае ни одной переменной "LC_*" не было. VK> Из всех пяти архивов у четырёх, которые не UTF-8, совпали md5-суммы. Т.е. для VK> tar указание любой восьмибитной кодировки имён файлов равносильно её неуказанию, VK> влияние оказывает только указание многобайтной кодировки, хотя из них я и VK> проверил только лишь UTF-8. Так и должно быть. Как я уже говорил, в tar нет перекодировки и на локаль ему плевать, он сохраняет имена так, как они лежат на файловой системе. В отличие от NTFS и прочих, которые сохраняют имена в определенной кодировке, в UFS на фре нет понятия кодировки - в именах файлов допустимы любые байты, кроме зарезервированных / (разделитель каталогов) и нулевого байта (терминатор строк). Интерпретация имён оставлена приложениям - хотят, интерпретируют в KOI8-R, хотят - в CP1251, хотят - в UTF-8 или других. VK> Потом я оба [отличающихся] tar-файла проверял уже на распаковку (tar-ом) под VK> 10.1 и смотрел, что будет с именами, тоже пытаясь задавать разные LC_ALL. Как и VK> следовало ожидать, имена файлов не искорёжились только если и при упаковке и при VK> распаковке перед вызовом tar стояла строка "export LCALL=ruRU.UTF-8". Но это VK> ладно, это неудивительно. Странно другое, мне удалось распаковать test.tar с VK> 8-ми битной кодировкой имён, сохранив имена в порядке, если я распаковывал их не VK> tar-ом, а копированием из-под MidnightCommander. А у mc своя реализация tarfs, он системный bsdtar не использует. VK> Вот это уже меня удивило не на VK> шутку. Значит информация о русских именах в каком-то более-менее пристойном виде VK> сохраняется и в однобайтной (непонятно какой) кодировке, просто tar её извлечь VK> не может. Существуют разные форматы tar-архивов. В формате gnutar не сохраняется информация о кодировке имён файлов, имена сохраняются как последовательности "сырых байтов" - как сохранили, так и развернули и пофиг на локали. Этот формат можно указать при создании архива через tar --format=gnutar, но это не дефолт. По дефолту при локали UTF-8 tar сохраняет информацию об этой локали в именах файлов, которые являются корретными строчками в кодировке UTF-8 (ASCII - подмножество UTF-8). Eugene --- slrn/1.0.1 (FreeBSD) |