3 votes

Noms de fichiers UTF8 et utilitaires shell

Essayez les commandes suivantes depuis le terminal :

touch á.txt
$ ls
á.txt

find .  -name á.txt -print

n'imprime rien.

Mes paramètres de Terminal.app sont utf8 - voir ici :

enter image description here

La question : Comment parvenir à travailler de manière transparente (Finder + ligne de commande) avec des noms de fichiers UNICODE ?

Je comprends que, derrière la scène, il y a la normalisation différente de l'unicode :

$ echo á.txt | od -bc
0000000   303 241 056 164 170 164 012                                    
           á  **   .   t   x   t  \n 

et quand

$touch á.txt
$ ls *.txt
á.txt

$ ls *.txt | od -bc
0000000   141 314 201 056 164 170 164 012                                
           a        **   .   t   x   t  \n   

mais QUELLE EST LA SOLUTION ?

3voto

Fuzzy Purple Monkey Points 702

Comme vous l'avez mentionné, les caractères comme á sont stockés ou affichés sous forme décomposée (LATIN SMALL LETTER A + ACCENT ACUTE COMBINÉ), même si la plupart des claviers insèrent les caractères sous forme composée (LATIN SMALL LETTER A AVEC ACUTE).

Le format est une variante du NFD où certaines plages de caractères ne sont pas décomposées. Voir Encodages de texte dans VFS :

Important : les termes utilisés dans ce Q&R, précomposé et décomposé, correspondent approximativement aux formes normales C et D d'Unicode, respectivement. Cependant, la plupart des formats de volume ne suivent pas la spécification exacte de ces formes normales. Par exemple, HFS Plus (Mac OS Extended) utilise une variante de la forme normale D dans laquelle les caractères U+2000 à U+2FFF, U+F900 à U+FAFF et U+2F800 à U+2FAFF ne sont pas décomposés (ce qui évite les problèmes liés aux conversions aller-retour à partir des anciens codages de texte Mac).

Vous pouvez convertir le texte au format décomposé avec iconv -t utf-8-mac :

$ touch á
$ ls | tr -d '\n' | xxd -p
61cc81
$ printf á | xxd -p
c3a1
$ find . -name á
$ find . -name $(iconv -f utf-8 -t utf-8-mac <<< á)
./á

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X