En interne, la plupart des systèmes de fichiers stockent des octets: le pilote du système de fichiers ne se soucie pas de la signification des octets. Le pilote de système de fichiers générique sous Linux et la plupart des autres unités modernes permet à tout octet autre que /
et à l'octet nul d'apparaître dans un nom de fichier.
Il existe des systèmes de fichiers qui peuvent avoir des contraintes de codage - généralement des systèmes de fichiers non natifs tels que FAT ou NTFS. Certains systèmes de fichiers réseau tels que Samba peuvent se traduire entre l'encodage serveur et l'encodage client; vous devez vous assurer que les configurations serveur et client sont cohérentes.
Classiquement, sur la plupart des systèmes, les octets qui composent un nom de fichier sont interprétés comme UTF-8. Si vous exécutez une application qui interprète les noms de fichiers sous forme de caractères, par exemple une application qui transmet les noms via FTP, vous devrez peut-être configurer cette application pour lui indiquer que vos noms de fichiers sont codés en UTF-8. Définir l'environnement LC_CTYPE
sur un environnement local UTF-8 comme le en_US.UTF-8
fait l'astuce pour de nombreuses applications en ligne de commande.
Si vous stockez des fichiers sur un système qui ne prend pas en charge UTF-8, cela n'a pas d'importance. Les octets resteront les mêmes. Vous ne pourrez pas afficher les caractères qui composent les noms de fichiers, mais si vous copiez les fichiers sur un système qui prend en charge UTF-8, ces mêmes octets s'afficheront toujours en tant que caractères UTF-8.
Si vous écrivez votre propre application, utiliser UTF-8 en interne et, si possible, pour le stockage et la transmission est une bonne idée.
Gilles 'SO- arrête d'être méchant'
la source