4. Syntax of UTF-8 Byte Sequences (Syntaxe des séquences d'octets UTF-8)
Pour la commodité des implémenteurs utilisant ABNF, une définition d'UTF-8 en syntaxe ABNF est donnée ici.
Définition de chaîne UTF-8 (UTF-8 String Definition)
Une chaîne UTF-8 est une séquence d'octets représentant une séquence de caractères UCS. Une séquence d'octets n'est UTF-8 valide que si elle correspond à la syntaxe suivante, qui est dérivée des règles de codage UTF-8 et est exprimée dans l'ABNF de [RFC2234].
Syntaxe ABNF
UTF8-octets = *( UTF8-char )
UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
UTF8-1 = %x00-7F
UTF8-2 = %xC2-DF UTF8-tail
UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
%xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
%xF4 %x80-8F 2( UTF8-tail )
UTF8-tail = %x80-BF
Explication de la syntaxe (Syntax Explanation)
UTF8-1 : Séquences à un octet
%x00-7F
- Plage : 0x00 à 0x7F (0-127)
- Codage : Plage ASCII complète
- Modèle :
0xxxxxxx
UTF8-2 : Séquences à deux octets
%xC2-DF UTF8-tail
- Premier octet : 0xC2 à 0xDF (194-223)
- Octet de queue : 0x80 à 0xBF (128-191)
- Modèle :
110xxxxx 10xxxxxx - Note : Le premier octet ne peut pas être 0xC0 ou 0xC1 (produirait un codage trop long)
UTF8-3 : Séquences à trois octets
Quatre cas :
Cas 1 : %xE0 %xA0-BF UTF8-tail
- Premier octet : 0xE0
- Deuxième octet : 0xA0 à 0xBF
- Troisième octet : 0x80 à 0xBF
- Plage de codage : U+0800 à U+0FFF
Cas 2 : %xE1-EC 2( UTF8-tail )
- Premier octet : 0xE1 à 0xEC
- Octets suivants : Deux UTF8-tail (0x80-0xBF)
- Plage de codage : U+1000 à U+CFFF
Cas 3 : %xED %x80-9F UTF8-tail
- Premier octet : 0xED
- Deuxième octet : 0x80 à 0x9F
- Troisième octet : 0x80 à 0xBF
- Plage de codage : U+D000 à U+D7FF
- Note : Évite la plage des paires de substitution (U+D800-U+DFFF)
Cas 4 : %xEE-EF 2( UTF8-tail )
- Premier octet : 0xEE à 0xEF
- Octets suivants : Deux UTF8-tail
- Plage de codage : U+E000 à U+FFFF
UTF8-4 : Séquences à quatre octets
Trois cas :
Cas 1 : %xF0 %x90-BF 2( UTF8-tail )
- Premier octet : 0xF0
- Deuxième octet : 0x90 à 0xBF
- Octets suivants : Deux UTF8-tail
- Plage de codage : U+10000 à U+3FFFF
Cas 2 : %xF1-F3 3( UTF8-tail )
- Premier octet : 0xF1 à 0xF3
- Octets suivants : Trois UTF8-tail
- Plage de codage : U+40000 à U+FFFFF
Cas 3 : %xF4 %x80-8F 2( UTF8-tail )
- Premier octet : 0xF4
- Deuxième octet : 0x80 à 0x8F
- Octets suivants : Deux UTF8-tail
- Plage de codage : U+100000 à U+10FFFF
Valeurs d'octets invalides (Invalid Byte Values)
Les valeurs d'octets suivantes n'apparaissent jamais dans des séquences UTF-8 valides :
Valeurs d'octets interdites :
- 0xC0, 0xC1 (produiraient des séquences à 2 octets trop longues)
- 0xF5 - 0xFF (au-delà de la plage Unicode)
⚠️ Note importante
NOTE -- La définition autoritative d'UTF-8 se trouve dans [UNICODE]. Cette grammaire est censée décrire la même chose que Unicode décrit, mais ne prétend pas être autoritative. Les implémenteurs sont invités à se fier à la source autoritative, plutôt qu'à cet ABNF.
Liens connexes
- Précédent : 3. UTF-8 definition (Définition d'UTF-8)
- Retour à l'accueil RFC 3629
- Suivant : 5. Versions of the standards (Versions des normes)