UTF-32, quelquefois appelé UCS-4, est un codage des caractères défini par Unicode où chaque caractère est codé sur un mot de 32 bits.
Le codage était défini dans l’annexe 19 à la norme Unicode. Depuis, l’annexe est devenue obsolète, car UTF-32 fait partie intégrante de la norme Unicode, dans son chapitre 3 Conformance où elle est définie de façon très stricte.
Un avantage de la largeur fixe est qu’il est plus facile de calculer la longueur d’une chaîne de caractères contrairement à l’UTF-8 et l’UTF-16, où les deux sont des codages à largeur variable. Un autre avantage est qu’il est plus facile de trouver le nième caractère d’une chaîne, où le nième caractère est la longueur de la chaîne divisée par 4.
L’inconvénient le plus significatif est que les caractères les plus utilisés utilisent 4 octets. Par exemple, le caractère @
est représenté comme 00 00 00 40
en UTF-32.[1] En UTF-16, ce caractère est codé comme ceci : 00 40
. En UTF-8, il est codé comme ceci : 40
. Les 11 bits les plus significatifs sont toujours zéros. Un texte en UTF-32 peut-être jusqu’à 2 fois plus grand qu’un texte en UTF-16 et jusqu’à 4 fois plus grand qu’un texte en UTF-8 (le codage le plus commun).
Utilisation
En général, ce codage est rarement utilisé à cause de son gaspillage d’espace et de son interdiction comme codage dans les documents HTML.[2],[3]
En C++2011, il existe 2 types de données qui utilisent l’UTF-32. Un caractère est stocké comme char32_t
. Une chaîne UTF-32 est stockée comme u32string
. Les deux types sont identifiés par le préfixe U
avant le caractère ou la chaîne. Voici un exemple :
#include <string>
char32_t caractère_UTF32 = U'🔟'; // aussi écrit comme U'\U0001F51F'
std::u32string chaîne_UTF32 = U"Chaîne de caractères UTF–32"; // définie comme `const char32_t*´
En Python, depuis la version 3.3, une chaîne est stockée en UTF-32 si elle contient au moins 1 caractère dont le point de code est supérieur ou égal à U+10000
[4] En plus, cela signifie qu’un caractère non-PMB n’est pas égal à son pair de demi-codets ("\U0001F51F" != "\ud83d\udd1f"
).
Références
Voir aussi
Blocs de caractères Unicode contenant des non-caractères
[ modifier ]
- Demi-zone haute d’indirection
- Demi-zone basse d’indirection
- Arabe – formes de présentation – A (2e partie)
- Caractères spéciaux
- Fins de plans supplémentaires : plan multilingue complémentaire, plan idéographique complémentaire, plan 3, plan 4, plan 5, plan 6, plan 7, plan 8, plan 9, plan 10, plan 11, plan 12, plan 13, plan complémentaire spécialisé, zone supplémentaire A à usage privé, zone supplémentaire B à usage privé
Liens internes
Liens externes
|
Jeux de caractères de base |
|
|
Codification de fichiers et protocoles |
|
Adaptations de référence |
|
Équivalences standards |
- NFC (forme précomposée, recommandée)
- NFD (forme décomposée)
- NFKC (forme précomposée de compatibilité)
- NFKD (forme décomposée de compatibilité)
|
Propriétés et algorithmes |
|
Transformations |
|
Standards et normes liés |
- BCP 47 (étiquettes IETF d’identification de langues)
- ISO 639 (codes pour la représentation des noms de langues ou groupes de langues)
- ISO 15924 (codes pour la représentation des noms d’écritures)
- ISO 3166-1 (codes pour la représentation des noms de pays ou régions du monde)
- ISO 4217 (codes pour la représentation des noms de devises monétaires)
|
Mises en œuvre et applications |
|
Jeux de caractères codés |
Multi-octets |
|
|
8 bits |
ISO/CEI 8859 |
- -1 (Latin-1)
- -2 (Latin-2)
- -3 (Latin-3)
- -4 (Latin-4)
- -5 (Cyrillique)
- -6 (Arabe)
- -7 (Grec)
- -8 (Hébreu)
- -9 (Latin-5)
- -10 (Latin-6)
- -11 (Thaï)
- -12 (Devanagari)
- -13 (Latin-7)
- -14 (Latin-8)
- -15 (Latin-9)
- -16 (Latin-10)
|
Pages de code Windows |
|
Pages de code Mac OS |
MacRoman |
Pages de code DOS |
|
Pages de code diverses |
|
Non basés sur ISO/IEC 646 |
|
|
7 bits |
|
Moins de 7 bits |
|
|