[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

UTF-32

format de transformation des textes codés avec 4 octets par point de code dans le jeu de caractères universel défini par la norme ISO/CEI 10646 et le Standard Unicode

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. L’UTF-32 peut-être jusqu’à 2 fois plus grand qu’UTF-16 et jusqu’à 4 fois plus grand que l’UTF-8 (le codage le plus commun).

Utilisation

modifier

En général, ce codage est rarement utilisé à cause de son gaspillage d’espace et son interdiction comme un 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

modifier
  1. Cet exemple utilise UTF-32 BE (UTF-32 gros-boutiste). Le même caractère en UTF-32 LE (petit-boutiste): 40 00 00 00
  2. (en) « HTML Standard », sur html.spec.whatwg.org (consulté le )
  3. « Choisir et appliquer un encodage de caractères », sur www.w3.org (consulté le )
  4. (en) « PEP 393 -- Flexible String Representation », sur legacy.python.org (consulté le )

Voir aussi

modifier

Liens internes

Liens externes

modifier