web-dev-qa-db-fra.com

ubuntu å vs osx å?

Je ne sais pas s'il s'agit d'une question ubuntu ou osx, mais je vais commencer ici. Je laisse le soin aux mods de déplacer la question vers AskDifferent si elle est plus appropriée.

J'ai déplacé un fichier d'ubuntu vers osx en utilisant scp sur la machine Apple. J'ai édité le fichier sur la machine Apple. Ensuite, j'ai replacé le fichier, encore une fois en utilisant scp sur la machine Apple.

Le nom du fichier source était Documents/trettiårsfirarätare.

  • Code source: Documents/trettiårsfirarätare

Le nom de fichier que j'ai récupéré portait le nom Documents/trettiårsfirarätare.

  • Code source: Documents/trettia˚rsfirara¨tare

Bien que ceux-ci puissent sembler similaires, les lettres å et ä sont en fait différentes entre elles. À aucun moment je n'ai changé le nom du fichier.

Cela fait peu de différence technique pour moi, je viens de changer le nom du fichier en ce que ubuntu considère å et ä, mais cela a chatouillé ma curiosité.

Pouvez-vous m'expliquer pourquoi cela s'est produit?

10
azzid

Dans le nom d'origine "Documents/trettiårsfirarätare", la lettre "å" est représentée en interne comme U + 00E5 LETTRE MINUSCULE LATINE A AVEC ANNEAU CI-DESSUS. Ceci est la représentation commune de ce personnage. Dans le nom de fichier que vous avez récupéré, il a été transformé en la paire de caractères U + 0061 LETTRE MINUSCULE LATINE A U + 030A ANNEAU COMBINÉ CI-DESSUS. Ceci est permis, mais pas courant; cela signifie décomposer "å" en le caractère de base "a" et une combinaison de signes diacritiques. Ces représentations sont déclarées canoniquement équivalentes en Unicode; cela signifie que la présentation visuelle devrait normalement être la même, mais ce n'est pas nécessaire (ici, à SO, comme vu dans Firefox, ce n'est pas le cas - cela dépend de la police et du logiciel de rendu). Les programmes peuvent les traiter comme équivalents, mais ils n'en ont pas besoin. Dans un système de fichiers, par exemple, ils pourraient bien être traités comme différents.

De même, la lettre "ä" est décomposée en U + 0061 LETTRE MINUSCULE LATINE A U + 0308 COMBINAISON DIAERESIS.

La raison de cela n'est pas évidente. Peut-être que certains logiciels "pensent" qu'il devrait convertir les chaînes en une forme de normalisation qui décompose tous les caractères décomposables, probablement Normalisation Unicode Forme D (NFD)

Le reste est un peu plus mystérieux. Ce que vous spécifiez comme "Sourcecode" pour le nom de fichier que vous avez récupéré, "Documents/trettia˚rsfirara¨tare", les formes décomposées ont été munées: les signes diacritiques ont été remplacés par leurs clones d'espacement, les caractères "˚" et "¨ ". Ce n'est pas normal et cela change à la fois l'identité des données et leur rendu.

8
Jukka K. Korpela