forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.UNIX.BSD

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 17.08.2016, 13:58
Vassily Kiryanov
Guest
 
Сообщений: n/a
По умолчанию файлы с русскими именами

Vassily Kiryanov написал(а) к All в Jan 15 17:35:56 по местному времени:

Нi All!

Кто как файлы с русскими именами архивирует/восстанавливает? А то тащил tar-ом со старой 8.2 на новую 10.1 - побились имена.


Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго.
Vassily
---
Ответить с цитированием
  #2  
Старый 17.08.2016, 13:58
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 17.08.2016, 13:58
Vova Uralsky
Guest
 
Сообщений: n/a
По умолчанию файлы с русскими именами

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  
Старый 17.08.2016, 13:58
Vassily Kiryanov
Guest
 
Сообщений: n/a
По умолчанию файлы с русскими именами

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  
Старый 17.08.2016, 13:58
Vassily Kiryanov
Guest
 
Сообщений: n/a
По умолчанию файлы с русскими именами

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  
Старый 17.08.2016, 13:58
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию 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)
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:35. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot