Ubuntu против OSX?


10

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

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

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

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

Имя файла, которое я получил, имело название Documents / trettiårsfirarätare .

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

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

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

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


1
Эта проблема, вероятно, будет связана с Unicode. Что произойдет, если вы скопируете (или эквивалентную) копию из OS X в Ubuntu (или Ubuntu в OS X), но на компьютере с Ubuntu?
Давид6

Я посмотрел на этот вопрос с компьютера Mac и не увидел никакой разницы между строками, теперь, когда я вернулся к своему ноутбуку Ubuntu, я сразу увидел квадраты, даже до редактирования Takkat.
Алвар

Я не буду пытаться работать с Ubuntu в OSX на Ubuntu из-за того, что на компьютере Apple нет sshd, но достаточно изменить OSX для изменения имени файла. Я скопировал его туда и обратно только один раз, и имя было изменено, поэтому кажется, что scp - это приложение, меняющее имя.
Аззид

Ответы:


8

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

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

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

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


Часть SourceCode не была добавлена ​​мной. Я вижу, что есть разница между буквами в их визуальном представлении, первая буква имеет меньшее кольцо, чем вторая, но в остальном строки выглядят одинаково. Они не являются эквивалентными при использовании завершения вкладки bash.
Аззид

На самом деле å - это отдельная буква, это не просто a с диакритическим знаком, точно так же, как h это буква, а не просто и n с диакритическим знаком.
kasperd
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.