Ubuntu против OSX?

Не уверен, что это вопрос Ubuntu или OSX, но я начну здесь. Я оставлю это модам, чтобы перенести вопрос в AskDifferent, если это будет более подходящим.

Я переместил файл из Ubuntu в OSX, используя scp на компьютере Apple. Я отредактировал файл на яблочной машине. Затем я переместил файл обратно, снова используя scp на компьютере Apple.

Имя исходного файла было Documents / trettiårsfirarätare .

  • Исходный код: Documents/trettiårsfirarätare

Полученное мной имя файла имело имя Documents / trettiårsfirarätare .

  • Исходный код: Documents/trettia˚rsfirara¨tare

Хотя они могут выглядеть одинаково, буквы å и ä на самом деле различаются между ними. Ни в коем случае я не менял имя файла.

Это мало что меняет для меня, я просто изменил название файла на то, что ubuntu считает å и ä, но это поразило мое любопытство.

Можете ли вы объяснить мне, почему это произошло?

10
задан 22 August 2013 в 12:14

1 ответ

В оригинальном названии «Documents / trettiårsfirarätare» буква «å» внутренне представлена ​​как U + 00E5 МАЛЕНЬКОЕ ПИСЬМО А С КОЛЬЦОМ ВЫШЕ. Это общее представление этого персонажа. В имени файла, которое вы вернули, оно было преобразовано в пару символов U + 0061 LATIN SMALL LETTER A U + 030A КОМБИНИРУЮЩЕЕ КОЛЬЦО ВЫШЕ. Это допустимо, но не распространено; это означает разложение «å» на базовый символ «a» и объединяющий диакритический знак. Эти представления объявлены канонически эквивалентными в Unicode; это означает, что обычно ожидается, что визуальное представление будет таким же, но это не обязательно (здесь, в SO, как видно в Firefox, это не так - это зависит от шрифта и программного обеспечения для рендеринга). Программы могут относиться к ним как к эквивалентным, но им это не нужно. Например, в файловой системе они вполне могут рассматриваться как разные.

Точно так же буква «ä» разлагается на U + 0061 ЛАТИНСКИЙ МАЛЕНЬКИЙ БУКВ А A + 0308 КОМБИНИРУЮЩИЙ ДИАРЕЗ.

Причина этого не очевидна. Возможно, какое-то программное обеспечение «думает», что должно преобразовать строки в форму нормализации, которая разлагает все разложимые символы, вероятно, Нормализация Unicode Форма D (NFD)

Остальное немного более таинственно. То, что вы указываете как «Исходный код» для имени файла, которое вы вернули, «Documents / trettia˚rsfirara¨tare», разложенные формы были спрятаны: диакритические знаки были заменены их клонами, символы «˚» и «¨ ». Это не нормально, и это меняет как идентичность данных, так и их рендеринг.

0
ответ дан 22 August 2013 в 12:14

Другие вопросы по тегам:

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