Partager via


Utilisation des marques d’ordre d’octets

Précédez toujours un fichier de texte brut Unicode avec une marque d’ordre d’octet, qui informe une application recevant le fichier que le fichier est classé en octets. Les marques d’ordre d’octet disponibles sont répertoriées dans le tableau suivant. Étant donné que le texte brut Unicode est une séquence de valeurs de code 16 bits, il est sensible à l’ordre d’octets utilisé lors de l’écriture du texte.

Notes

Une marque d’ordre d’octet n’est pas un caractère de contrôle qui sélectionne l’ordre d’octet du texte.

 

Marque d'ordre d'octet Description
EF BB BF UTF-8
FF FE UTF-16, little endian
FE FF UTF-16, Big Endian
FF FE 00 00 UTF-32, little endian
00 00 FE FF UTF-32, big-endian

 

Notes

Microsoft utilise UTF-16, ordre d’octets little endian.

 

Dans l’idéal, tout le texte Unicode ne suit qu’un seul ensemble de règles de classement d’octets. Cela n’est toutefois pas possible, car les microprocesseurs diffèrent dans le placement de l’octet le moins significatif. Les processeurs Intel et MIPS placent les octets les moins significatifs en premier, tandis que les processeurs Motorola (et tous les fichiers Unicode inversés par octets) le positionnent en dernier. Avec un seul ensemble de règles de classement d’octets, les utilisateurs d’un type de microprocesseur sont obligés d’échanger l’ordre d’octets chaque fois qu’un fichier texte brut est lu ou écrit dans, même si le fichier n’est jamais transféré vers un autre système d’exploitation basé sur un microprocesseur différent.

L’emplacement préféré pour spécifier l’ordre d’octet se trouve dans un en-tête de fichier, mais les fichiers texte n’ont pas d’en-têtes. Par conséquent, Unicode a défini un caractère (U+FEFF) et un non-caractère (U+FFFE) comme marques d’ordre d’octet. Ils sont miroir images d’octets les uns des autres.

Étant donné que la séquence U+FEFF est extrêmement rare au début d’un fichier texte non Unicode normal, elle peut servir de marqueur ou de signature implicite pour identifier le fichier en tant que fichier Unicode. Les applications qui lisent à la fois des fichiers texte Unicode et non-Unicode doivent utiliser la présence de cette séquence comme indicateur que le fichier est probablement un fichier Unicode. Comparez cette technique à l’utilisation du marqueur MS-DOS EOF pour arrêter les fichiers texte.

Lorsqu’une application trouve U+FEFF au début d’un fichier texte, elle traite généralement le fichier en tant que fichier Unicode, bien qu’elle puisse effectuer d’autres vérifications heuristiques pour la vérification. Une telle case activée peut être aussi simple que des tests pour déterminer si la variation des octets d’ordre inférieur est beaucoup plus élevée que la variation des octets d’ordre élevé. Par exemple, si le texte ASCII est converti en texte Unicode, chaque octet sur deux est 0. En outre, la vérification des caractères de retour de saut de ligne et chariot (U+000A et U+000D) et de la taille de fichier paire ou impaire peut fournir un indicateur fort de la nature du fichier.

Lorsqu’une application trouve U+FFFE au début d’un fichier texte, elle l’interprète comme signifiant que le fichier est un fichier Unicode inversé par octets. L’application peut soit permuter l’ordre des octets, soit avertir l’utilisateur qu’une erreur s’est produite.

Étant donné que le caractère de marque d’ordre d’octet Unicode ne se trouve dans aucune page de codes, il disparaît si les données sont converties en ANSI. Contrairement à d’autres caractères Unicode, il n’est pas remplacé par un caractère par défaut lors de sa conversion. Si une marque d’ordre d’octets est trouvée au milieu d’un fichier, elle n’est pas interprétée comme un caractère Unicode et n’a aucun effet sur la sortie du texte.

Notes

La valeur Unicode U+FFFF est illégale dans les fichiers de texte brut et ne peut pas être transmise entre les applications. Elle est réservée à l’utilisation privée d’une application.

 

Utilisation de caractères spéciaux dans Unicode