Byte Order Mark


Byte Order Mark

Marque d'ordre des octets

Page d'aide sur l'homonymie Pour les articles homonymes, voir BOM.
Unicode
Jeux de caractères
Équivalences normalisées
  • NFC (précomposée)
  • NFD (décomposée)
  • NFKC (compatibilité)
  • NFKD (compatibilité)
Propriétés et algorithmes
Codage
Autres transformations
Applications d'échanges de données

En unicode, une Marque d'ordre des octets ou BOM (pour l'anglais Byte Order Mark) est un caractère unicode de code point U+FEFF (espace insécable de largeur nulle «zero-width no-break space»), quand ce caractère est utilisé pour marquer l'endianness d'une chaîne de caractères UCS/Unicode codée en UTF-16 ou UTF-32 et/ou comme marqueur pour indiquer que le texte est codé en UTF-8, UTF-16 ou UTF-32.

Lorsqu'il est correctement interprété, le BOM n'est pas vu par l'utilisateur final du texte codé. Dans le cas contraire, l'utilisateur est confronté à une courte séquence de caractères incompréhensibles. Dans la plupart des codages le BOM est une séquence qui est peu vraisemblablement visible dans la plupart des codages conventionnels ou autres codages unicodes (cela ressemble usuellement à une obscure séquence de codes de contrôles). Si un BOM est mal interprété comme caractères à l'intérieur du texte, alors il sera invisible en raison du fait que c'est un zero-width no-break space. L'utilisation du caractère U+FEFF comme un «espace insécable de largeur nulle» a été dépréciée dans la version Unicode 3.2 (qui fournit une alternative : U+2060 pour cette utilisation). Ce caractère doit donc être utilisé seulement pour la sémantique de «BOM».

Sommaire

BOM dans les différents encodages unicode

En UTF-16, un BOM est exprimé avec une séquence de deux octets FE FF au début de la chaîne codée, pour indiquer que les caractères codés suivants utilisent l'ordre big-endian; ou, si la séquence est FF FE pour indiquer l'ordre little-endian. La valeur U+FFFE est garantie pour ne pas être du tout un caractère Unicode, et peut être utilisée pour détecter l'ordre des octets par contraste avec U+FEFF qui est un caractère.

Alors qu'UTF-8 n'est lié à aucune problématique d'ordre des octets, un BOM codé en UTF-8 peut être utilisé pour identifier un fichier comme UTF-8, bien que ce ne soit pas recommandé[1]. Le BOM n'apporte alors aucune information sur l'ordre des octets[2].

Bien qu'un BOM puisse être utilisé avec UTF-32, ce codage n'est cependant jamais utilisé en pratique.

Problèmes liés à l'utilisation de la marque d'ordre des octets

Beaucoup de logiciels Windows (incluant Windows Notepad) en ajoutent un aux fichiers UTF-8. Cependant, sur des systèmes de type Unix (qui utilisent beaucoup les fichiers textes pour la configuration) cette pratique n'est pas recommandée, car cela peut interférer avec le traitement adéquat de codes importants tels que le shebang au début d'un script interprété[3]. Il peut également interférer avec le source pour les langages de programmation qui ne le reconnaissent pas. Par exemple, gcc reporte des stray characters au début du fichier source, et en PHP, si l'output buffering est désactivé, cela a pour effet subtil de faire que la page commence immédiatement à être envoyée au navigateur, et d'empêcher les custom headers d'être spécifiés par le script PHP. La représentation UTF-8 du BOM est la séquence d'octets EF BB BF, qui apparaît en codage ISO-8859-1 comme "" dans les éditeurs de textes et navigateurs mal préparés pour traiter l'UTF-8. Ils peuvent également échouer à appliquer la première règle d'une feuille CSS[4].

Représentations des marques d'ordre d'octets par codage

Codage Représentation
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00
SCSU 0E FE FF
UTF-7 2B 2F 76
et l'une des séquences d'octets suivantes: [ 38 | 39 | 2B | 2F | 38 2D ]
UTF-EBCDIC DD 73 66 73
BOCU-1 FB EE 28

La norme unicode n'impose pas toujours la marque d'ordre des octets en début de flux de données unicode, c'est le cas en particulier pour UTF-8, où le BOM est facultatif.

Voir aussi

Références

  1. (en) http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf. Consulté le 4 janvier 2009. « Use of a BOM is neither required nor recommended for UTF-8, but may be encountered in contexts where UTF-8 data is converted from other encoding forms that use a BOM or where the BOM is used as a UTF-8 signature », p. 36
  2. (en) FAQ - UTF-8, UTF-16, UTF-32 & BOM: Can a UTF-8 data stream contain the BOM character (in UTF-8 form)? If yes, then can I still assume the remaining UTF-8 bytes are in big-endian order?. Consulté le 4 janvier 2009
  3. (en) Markus Kuhn, « UTF-8 and Unicode FAQ for Unix/Linux: What different encodings are there? », 2007. Consulté le 20 janvier 2009. « Adding a UTF-8 signature at the start of a file would interfere with many established conventions such as the kernel looking for “#!” at the beginning of a plaintext executable to locate the appropriate interpreter. »
  4. (en) FAQ: Display problems caused by the UTF-8 BOM, W3C i18n

Liens externes

Ce document provient de « Marque d%27ordre des octets ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Byte Order Mark de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Byte order mark — (BOM) Unicode символ, используемый для индикации порядка байтов текстового файла. Его кодовый символ U+FEFF. По спецификации его использование не является обязательным, однако если BOM используется, то он должен быть установлен в начале… …   Википедия

  • Byte-order mark — A byte order mark (BOM) is the Unicode character at code point U+FEFF ( zero width no break space ) when that character is used to denote the endianness of a string of UCS/Unicode characters encoded in UTF 16 or UTF 32. It is conventionally used… …   Wikipedia

  • Byte Order Mark — Als Byte Order Mark (BOM, dt. „Bytereihenfolge Markierung“) wird das Unicode Zeichen U+FEFF (englisch zero width non breaking space) am Anfang eines Datenstroms bezeichnet, wo es als Kennung zur Definition der Byte Reihenfolge und… …   Deutsch Wikipedia

  • byte order mark — baitų eiliškumo ženklas statusas T sritis informatika apibrėžtis ↑Ženklas, nurodantis ↑baitų eiliškumą ↑unikodo tekste. Kodas U+FFFE. Rašomas unikodo teksto failo pradžioje. Šio ženklo baitus procesorius skaito jame nustatyta tvarka. Jeigu jis… …   Enciklopedinis kompiuterijos žodynas

  • Byte-Order — Die Byte Reihenfolge (engl.: Byte Order oder Endianness) bezeichnet die Speicherorganisation für einfache Zahlenwerte, in erster Linie die Ablage von ganzzahligen Werten (Integer) im Arbeitsspeicher. Eine Festlegung des zu verwendenden… …   Deutsch Wikipedia

  • Byte Order — Die Byte Reihenfolge (engl.: Byte Order oder Endianness) bezeichnet die Speicherorganisation für einfache Zahlenwerte, in erster Linie die Ablage von ganzzahligen Werten (Integer) im Arbeitsspeicher. Eine Festlegung des zu verwendenden… …   Deutsch Wikipedia

  • Byte order — Die Byte Reihenfolge (engl.: Byte Order oder Endianness) bezeichnet die Speicherorganisation für einfache Zahlenwerte, in erster Linie die Ablage von ganzzahligen Werten (Integer) im Arbeitsspeicher. Eine Festlegung des zu verwendenden… …   Deutsch Wikipedia

  • Network Byte Order — Die Byte Reihenfolge (engl.: Byte Order oder Endianness) bezeichnet die Speicherorganisation für einfache Zahlenwerte, in erster Linie die Ablage von ganzzahligen Werten (Integer) im Arbeitsspeicher. Eine Festlegung des zu verwendenden… …   Deutsch Wikipedia

  • Order of the Occult Hand — The Order of the Occult Hand is a whimsical secret society of American journalists who have been able to slip the meaningless and telltale phrase It was as if an occult hand had… in print as a sort of a game and inside joke. Contents 1 History 2… …   Wikipedia

  • Left-to-right mark — The left to right mark (abbr|LRM|left to right mark) is a non printing character used in the computerized typesetting of bi directional text containing mixed left to right scripts (such as English and Russian) and right to left scripts (such as… …   Wikipedia