Cela dépend-il du système de fichiers que j'utilise? Par exemple, ext2 / ext3 / ext4 mais aussi que se passe-t-il lorsque j'insère l'un de ces CD-ROM "joliet" avec ISO 9660? J'ai entendu dire que POSIX contient une sorte de spécification pour l'encodage de charset des noms de fichiers?
En gros, ce que je me demande, c’est que si j’ai un fichier UTF-8 encodé, quel traitement / jaquette dois-je effectuer avant de le transmettre à une API d’E / S sur fichier sous Linux?
Réponses:
Comme l'ont noté d'autres personnes, il n'y a pas vraiment de réponse à cela: les noms de fichiers et les chemins d'accès n'ont pas d'encodage; le système d'exploitation ne traite que de la séquence d'octets. Certaines applications peuvent choisir de les interpréter comme codées, mais cela varie.
Glib (utilisé par Gtk + apps) suppose en particulier que tous les noms de fichiers sont codés en UTF-8, quelle que soit la langue de l'utilisateur . Cela peut être remplacé par les variables d'environnement G_FILENAME_ENCODING et G_BROKEN_FILENAMES .
Par défaut, Qt considère par défaut que tous les noms de fichiers sont codés dans les paramètres régionaux de l'utilisateur actuel . Une application individuelle peut choisir de remplacer cette hypothèse, bien que je n'en sache aucune, et qu'il n'y a pas de commutateur de dérogation externe.
Les distributions Linux modernes sont configurées de manière à ce que tous les utilisateurs utilisent les locales UTF-8 et les chemins sur les montages de systèmes de fichiers étrangers sont convertis en UTF-8; cette différence de stratégie n'a donc généralement aucun effet. Cependant, si vous voulez vraiment être sûr, vous ne pouvez pas supposer de structure de noms de fichiers au-delà de "séquence d'octets délimitée par" NUL ".
(Remarque: les paramètres régionaux peuvent varier d'un processus à l'autre. Deux processus différents exécutés par le même utilisateur peuvent se trouver dans des paramètres régionaux différents simplement en configurant différentes variables d'environnement.)
la source
'\x2F'
peu importe ce à quoi ça ressemble/
. Notamment différent dans SJIS.La couche unix / posix de Linux ne se soucie pas de l’encodage que vous utilisez. Il stocke la séquence d'octets de votre codage actuel tel quel.
Je pense que ces options de montage sont là pour vous aider à convertir des systèmes de fichiers spécifiques qui définissent un jeu de caractères en votre jeu de caractères système. (Les variantes de CDROM, NTFS et FAT utilisent certaines variantes unicode).
Je souhaite qu'unix définisse un encodage global du système, mais il s'agit en réalité d'un paramètre par utilisateur. Donc, si vous définissez un codage différent de votre collègue, vos noms de fichiers apparaîtront différemment.
la source
Cela dépend de la manière dont vous montez le système de fichiers. Il suffit de jeter un coup d’œil sur les options de montage pour différents systèmes de fichiers dans
man mount
. Par exempleiso9660
,vfat
etfat
avoiriocharset
etutf8
options.la source