Marque d'ordre des octets

Marque d'ordre des octets
Page d'aide sur l'homonymie Pour les articles homonymes, voir BOM.

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 (boutisme) 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. Le terme officiel dans la version française de l'ISO/CEI 10646, qui est le pendant ISO d'Unicode, de ce caractère est indicateur d'ordre des octets (IOO).

Lorsqu'il est correctement interprété, l'IOO 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 une « espace insécable de largeur nulle » a été rendue obsolète 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 codages 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] ou faire échouer l'utilisation de certaines fonctions PHP5 (simplexml_load_file() par exemple).

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

Bibliographie

P. Andries, Unicode 5.0 en pratique, Paris, Dunod, 2008.


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Marque d'ordre des octets de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать курсовую

Regardez d'autres dictionnaires:

  • Marque D'ordre Des Octets — Pour les articles homonymes, voir BOM. Unicode Jeux de caractères UCS (ISO/CEI 10646) ISO 646, ASCII ISO 8859 1 WGL4 UniHan Équivalences normalisées NFC …   Wikipédia en Français

  • Byte Order Mark — Marque d ordre des octets Pour les articles homonymes, voir BOM. Unicode Jeux de caractères UCS (ISO/CEI 10646) ISO 646, ASCII ISO 8859 1 WGL4 UniHan Équivalences normalisées NFC …   Wikipédia en Français

  • Nombre magique (programmation) — Pour les articles homonymes, voir Nombre magique (homonymie). En programmation informatique, le terme magic number (en français « nombre magique ») peut référer à : une constante numérique ou un ensemble de caractères utilisé pour… …   Wikipédia en Français

  • Historique des versions d'iOS — ██████████85  …   Wikipédia en Français

  • BOM — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom.   Sigles d’une seule lettre   Sigles de deux lettres > Sigles de trois lettres   Sigles de quatre lettres …   Wikipédia en Français

  • Bom (homonymie) — BOM Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. {{{image}}}   Sigles d une seule lettre   Sigles de deux lettres > Sigles de trois lettres …   Wikipédia en Français

  • Abreviations en informatique B — Abréviations en informatique B B2B : Business to Business B2C : Business to Customer BACP : Bandwidth Allocation Control Protocol (en) (RFC 2125), voir Protocole point à point BAP : Bandwidth Allocation Protocol  …   Wikipédia en Français

  • Abréviations En Informatique B — B2B : Business to Business B2C : Business to Customer BACP : Bandwidth Allocation Control Protocol (en) (RFC 2125), voir Protocole point à point BAP : Bandwidth Allocation Protocol  …   Wikipédia en Français

  • Abréviations en informatique B — B2B : Business to Business B2C : Business to Customer BACP : Bandwidth Allocation Control Protocol (en) (RFC 2125), voir Protocole point à point BAP : Bandwidth Allocation Protocol  …   Wikipédia en Français

  • Abréviations en informatique b — B2B : Business to Business B2C : Business to Customer BACP : Bandwidth Allocation Control Protocol (en) (RFC 2125), voir Protocole point à point BAP : Bandwidth Allocation Protocol  …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”