Тот же файл, другое имя файла из-за кодирования проблемы?

Я не знаю, посмотрели ли Вы уже на это, но существует в арендном договоре 2 wikis на точке здесь:

Существует также большая статья о Предприятии, Объединяющем Планету в сеть о том, как сделать это.

8
08.03.2013, 10:31
2 ответа

Файловые системы Unix имеют тенденцию быть агностиком локали в том смысле, что имена файлов состоят из байтов, и это - бизнес приложения для решения то, что означают те байты, выходят ли они за пределы диапазона ASCII. Конвенция по Unix сегодня состоит в том, чтобы закодировать имена файлов и все остальное в UTF-8 кроме некоторых (главным образом азиатских) традиционных сред. Файловые системы Windows, с другой стороны, имеют тенденцию иметь кодирование, которое указано в свойствах файловой системы.

Если необходимо работать с именами файлов в другом кодировании, создайте переведенное представление той файловой системы с convmvfs. Посмотрите работу с именами файлов в другом кодировании по ssh

Кажется, что Вашей исходной системе закодировали имена файлов в латинском 1. Ваша существующая система использует UTF-8 и однобайтовое представление последовательности å в латинском 1 (\345) недопустимая последовательность в UTF-8 который ls печать как ?. Ваш процесс резервного копирования так или иначе привел к именам файлов, закодированным в UTF-8. Samba переводит имена файлов на основе своей конфигурации.

Для доступа к исходным файлам с собственным кодированием сделайте повторно кодированное представление:

mkdir /original-recoded
convmvfs -o icharset=LATIN1,ocharset=UTF8 /original /original-recoded
diff -r /original-recoded /frombackup

(Вам, возможно, понадобятся другие опции в зависимости от того, какие полномочия и владение Вы хотите получить.)

4
27.01.2020, 20:12
  • 1
    Спасибо за объяснение того, как это работает. Не уверенный это действительно помогает мне, Вы говорящий мне, у меня (вероятно), есть файловые системы, которые имеют различную кодировку, и таким образом я должен создать переведенное представление.. и т.д.? –  user135361 08.03.2013, 10:33
  • 2
    @user135361 у Вас есть наборы данных, где имена файлов имеют различную кодировку. Я развернул свой ответ. должностное лицо –  Gilles 'SO- stop being evil' 09.03.2013, 02:25
  • 3
    Это действительно добилось цели. Большое спасибо за Ваше понимание. –  user135361 10.03.2013, 19:35

В Unix/Linux имя файла может содержать любой символ кроме '\0' (ASCII NUL) и '/' (наклонная черта, разделитель каталога). В частности, если Вы хотите дать свои имена файлов в Кандзи в некотором странном кодировании, просто идти вперед. Вы будете, вероятно, только видеть мусор на ls(1) или другие команды, но ничего плохо не произойдет. Именно это Вы видите, представляется как p?, '?' вот общий ярлык для "unknown/non-ASCII символ".

Попытайтесь прокрутить оба имен файлов od -c, т.е. сделайте что-то как:

ls /the/dir/offending/fi* | od -c

(шарик должен отфильтровать несоответствующие имена, корректироваться к вкусу).

Только если вывод отличается, был бы я начинать вызывать беспокойство. Но, учитывая Вашу установку Svedish, я подозреваю, что корректное имя . Возможно, другой является именем в латинских 4 остатках от предыдущей установки?

1
27.01.2020, 20:12
  • 1
    Хотя не решение, я думаю, что Вы даете ценное объяснение того, как оно работает. Кроме того, я не знал о 'передозировке', отредактированный для обеспечения передозировки производят. –  user135361 08.03.2013, 10:32

Теги

Похожие вопросы