Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. UTF-16 — Wikipédia
UTF-16 — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article doit être recyclé (juillet 2025).

Une réorganisation et une clarification du contenu paraissent nécessaires. Améliorez-le, discutez des points à améliorer ou précisez les sections à recycler en utilisant {{section à recycler}}.

UTF-16 (16-bit Unicode Transformation Format) est un encodage de longueur variable qui permet de coder les 1 112 064 valeurs de code valides des normes Unicode et ISO/IEC 10646 . Les valeurs de code du plan multilingue de base (abréviation : PMB) sont codées sur un codet de 16 bits appelé seizet. Les valeurs de code des plans multilingues complémentaires sont codées sur une paire de seizets d'indirection : le seizet d'indirection supérieur (de 0xD800 à 0xDBFF) et le seizet d'indirection inférieur (de 0xDC00 à 0xDFFF)[1].

UTF-16 fait partie intégrante de la norme Unicode, dans son chapitre 3 Conformance[2], qui le définit de façon très stricte. Il utilise un jeu de caractères commun avec la norme ISO 10646. URF-16 prend en charge les 1 112 064 points de code Unicode valides.

Historique

[modifier | modifier le code]

UTF-16 est issu d'un ancien codage 16 bits à largeur fixe, désormais obsolète, connu sous le nom d'UCS-2[3] (pour Universal Character Set sur 2 octets). UCS-2 est le jeu de caractère de développements majeurs tels que Windows, IOS, Java ou Qt. Avec l’ajout des emojis et de caractères CJK importants, comme les noms de personnes et les noms de lieux, il est devenu évident qu’un codage sur 16 bits ne suffirait pas. UTF-16 est conçu comme une extension d’UCS-2, de façon à préserver l’existant.

La longueur variable de l'UTF-16, combinée au fait que la plupart des caractères ne sont pas de longueur variable (de sorte que la longueur variable est rarement testée), a entraîné de nombreux bugs logiciels. Plusieurs implémentations se limitent aux caractères codés sur un seul seizet, ou traitent la longueur variable de manière incomplète.

Usage

[modifier | modifier le code]

Contrairement à UTF-8, UTF-16 n’est pas compatible avec le code ASCII. Il n'a jamais gagné en popularité sur le Web, où il est déclaré par moins de 0,004 % des pages web publiques. UTF-8, en comparaison, domine l'encodage depuis des années et représente 99 % de toutes les pages web en 2025[4].

UTF-16 est plus compact que UTF-8 pour les textes avec les caractères asiatiques du Plan Multilingue de Base (PMB). Les caractères CJK sont codés sur deux octets au lieu de 3 en UTF-8.

Description

[modifier | modifier le code]

Chaque point de code Unicode est codé en une ou deux unités de 16 bits appelés seizet.

Les points de code inférieurs à 216 (« dans le PMB») sont codés avec un seul seizet dont la valeur est égale à la valeur numérique du point de code, comme dans ancien UCS-2.

Les points de code supérieurs ou égaux à 216 (« au-dessus du PMB») sont codés avec deux seizets. Ces deux seizets sont choisis dans la plage de d’indirection UTF-16  de 0xD800 à 0xDFFF. Les valeurs de cette plage ne sont jamais utilisées comme caractères, et UTF-16 ne permet pas de les coder comme points de code individuels. Un flux UTF-16 est donc constitué de seizets du PMB en dehors de la plage d’indirection et de paires de seizets d’indirection judicieusement choisies dans la plage d’indirection.

Points de code du plan multilingue de base (PMB)

[modifier | modifier le code]

Il s’agit des points de code de U+0000 à U+D7ff et de U+E000 à U+FFFF.

UTF-16 et UCS-2 codent les points de code de cette plage sous forme d'unités de code uniques de 16 bits appelés seizets, numériquement égales aux points de code correspondants.

Depuis Unicode 9.0, certaines écritures modernes non latines d'Asie, du Moyen-Orient et d'Afrique se situent en dehors de cette plage, tout comme la plupart des caractères emoji.

Points de code des 16 plans multilingues supplémentaires

[modifier | modifier le code]

Ce sont les points de code de U+010000 à U+10FFFF.

Ils sont codés sous forme de deux unités de code de 16 bits appelées seizets d’indirection. La première unité de code est le seizet  d’indirection supérieur (High-Surrogate Code Unit) et la seconde unité de code est le seizet d’indirection inférieur  (Low-Surrogate Code Unit).

La valeur 0x10000 est soustraite du point de code (U), il reste une valeur sur 20 bits (U') comprise entre 0x00000 et 0xFFFFF.

Les dix bits de poids fort (compris entre 0x000 et 0x3FF) sont ajoutés à 0xD800 pour obtenir le seizet d’indirection supérieur (W1), compris entre 0xD800 et 0xDBFF.

Les dix bits de poids faible (également compris entre 0x000 et 0x3FF) sont ajoutés à 0xDC00 pour obtenir le seizet d’indirection inférieur (W2), compris entre 0xDC00 et 0xDFFF.

Exemple

[modifier | modifier le code]
Point de code U+01F995 Le code est supérieur ou égal à 0x10000, on les lui retire pour obtenir 0x0F995. Son écriture binaire (sur 20 bits) est 00001111100110010101 qui se décompose donc en 0000111110 pour les 10 bits de poids fort et 0110010101 pour ceux de poids faible. Les bits de poids fort sont ajoutés à 0xD800 (1101100000000000) pour obtenir 1101100000111110, le seizet d’indirection supérieur. Et les bits de poids faible à 0xDC00 (1101110000000000) pour obtenir 1101110110010101, le seizet d’indirection inférieur.
Exemple de codage utf-16 pour le point de code Sauropode U+01F995.

Auto synchronisation

[modifier | modifier le code]

Étant donné que les plages des substituts supérieurs (0xD800–0xDBFF), des substituts inférieurs (0xDC00–0xDFFF) et des caractères PMB valides (0x0000–0xD7FF, 0xE000–0xFFFF) sont disjointes, il est impossible qu'un seizet d'indirection corresponde à un caractère PMB ou que deux unités de code adjacentes ressemblent à une paire de substituts valide. Cela simplifie considérablement les recherches. Cela signifie également que l'UTF-16 s'auto-synchronise sur les seizets : il est possible de déterminer si une unité de code commence un caractère sans examiner les unités de code précédentes (c'est-à-dire que le type d'unité de code peut être déterminé par les plages de valeurs dans lesquelles elle se situe). L'UTF-8 partage ces avantages, mais de nombreux schémas de codage multi-octets antérieurs (tels que Shift-JIS et autres codages multi-octets asiatiques) ne permettaient pas une recherche univoque et ne pouvaient être synchronisés qu'en analysant la chaîne depuis le début. Toutefois, UTF-16 ne s'autosynchronise pas si un octet est perdu.

Ordre des octets

[modifier | modifier le code]

Il y a deux façons de représenter un seizet avec deux octets :

  • Gros boutisme (big-endian en anglais) : Les 8 bits de poids fort du seizet sont dans le premier octet et les 8 bits de poids faible du seizet sont dans le second octet.
  • Petit boutisme (little-endian en anglais): Les 8 bits de poids faible du seizet sont dans le premier octet et les 8 bits de poids fort du seizet sont dans le second octet.

L’ordre des octets est donc important quand il s’agit des entrées-sorties. Pour faciliter la reconnaissance du mode utilisé, la norme définit le caractère U+FEFF nommé « indicateur d'ordre des octets » (BOM en anglais) à placer optionnellement au début d’un texte encodé en UTF-16. Il est aussi possible de spécifier directement l’encodage utilisé : avec l'étiquette UTF-16BE pour indiquer du texte UTF-16 big-endian et l'étiquette UTF-16LE pour indiquer du texte UTF-16 little-endian[5].

Notes et références

[modifier | modifier le code]
  1. ↑ « UTF-16 FAQ 1 », sur https://www.unicode.org (consulté le 1er juin 2025).
  2. ↑ https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-3/ 3 Conformance
  3. ↑ « UTF-16 FAQ 11 », sur https://www.unicode.org (consulté le 1er juin 2025).
  4. ↑ (en) « Usage statistics of UTF-16 for websites », sur w3techs.com (consulté le 5 juillet 2025)
  5. ↑ (en) Unicode, « Byte Order Mark (BOM) FAQ » (consulté le 7 juillet 2025)

Voir aussi

[modifier | modifier le code]

Sur les autres projets Wikimedia :

  • unicode, sur le Wiktionnaire
  • UTF-16, sur Wikibooks

Articles connexes

[modifier | modifier le code]
  • Boutisme
  • Table des caractères Unicode (0000-FFFF)
  • Plan multilingue complémentaire (PMC/SMP)
  • Indicateur d'ordre des octets
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 externes

[modifier | modifier le code]
  • (en) The Unicode Consortium, The Unicode Standard, Version 6.0.0, Mountain View, CA, février 2011 (ISBN 978-1-936213-01-6, présentation en ligne), chap. 3 (« Conformance »), p. 88-100 (3.9 Unicode Encoding Forms).
v · m
Unicode
Jeux de caractères de base
  • UCS (ISO/CEI 10646)
  • Table des caractères Unicode
  • ISO/CEI 646, ASCII
  • ISO/CEI 8859-1
  • WGL4
  • Unihan
Logo d'Unicode
Codification de fichiers et protocoles
  • UTF-8
  • UTF-16
  • UTF-32
  • CESU-8
  • UTF-7
  • BOCU-1
  • SCSU
  • BOM
Adaptations de référence
  • UTF-EBCDIC (Amérique, Europe occidentale)
  • ISO/CEI 8859-11 (ou TIS-620) (Thaïlande)
  • ISCII (Inde)
  • SLS 1326 (ou TSCII) (Sri Lanka)
  • Shift-JIS (Japon)
  • GB 18030 (Chine)
  • HKSCS (Hong Kong)
É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
  • Texte bidirectionnel
  • Casse
  • Ordonnancement UCA
Transformations
  • Stringprep
  • Punycode
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
  • ICU
  • CLDR
  • IDN
  • IRI
  • Entités de caractère XLM et HTML
  • OpenType
  • Uniscribe
  • Courriel et Unicode
v · m
Jeux de caractères codés
Multi-octets
Unicode
  • ISO/CEI 10646
  • Table des caractères Unicode
  • UTF-8
  • UTF-16
  • UTF-32
  • UTF-EBCDIC
  • CESU-8
  • BOCU-1
Asiatiques
  • ISO/CEI 2022
  • ISCII (Inde)
  • SLS 1326 (Sri Lanka)
  • Codage des caractères chinois
  • Shift-JIS (Japon)
  • Big5 (Taiwan et Hong Kong)
  • HKCS (Hong Kong)
  • GBK (Rép. Pop. de Chine)
  • GB 18030 (Rép. Pop. de Chine)
Ancienne encodeuse de texte sur ruban perforé
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
  • 874 / TIS-620
  • 932 / Shift JIS
  • 936 / GBK
  • 949 / EUC-KR
  • 950 / Big5
  • 1250
  • 1251
  • 1252
  • 1253
  • 1254
  • 1255
  • 1256
  • 1257
  • 1258
  • 54936 / GB18030
Pages de code Mac OS MacRoman
Pages de code DOS
  • 437
  • 720
  • 737
  • 775
  • 850
  • 852
  • 855
  • 857
  • 858
  • 860
  • 861
  • 862
  • 863
  • 864
  • 865
  • 866
  • 869
  • Kamenický
  • Mazovia
  • MIK
  • Iran System
Pages de code diverses
  • ANSEL
  • DEC-MCS
  • KOI8-R (russe)
  • KOI8-U (ukrainien)
  • StandardEncoding (PostScript)
  • Page de code vidéotex
  • Page de code ZX Spectrum
  • Page de code Amstrad CPC
  • Page de code Atari ST
  • Page de code Amiga
Non basés sur ISO/IEC 646
  • VISCII
  • EBCDIC
  • EBCDIC 297
  • EBCDIC 8859
7 bits
  • ISO/CEI 646 (base commune invariante et liste des spécialisations)
  • US ASCII
Moins de 7 bits
  • Code Chappe
  • Alphabet sémaphore
  • Code international des signaux maritimes
  • Code Morse international
  • Code wabun
  • Code Baudot
  • RADIX-50
  • Sixbit
  • Codage des caractères
  • Clavier d’ordinateur
  • Police numérique
  • Glyphe
  • Mojibake
  • Portail:Écriture
  • icône décorative Portail de l’informatique
  • icône décorative Portail de l’écriture
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=UTF-16&oldid=230255745 ».
Catégorie :
  • Unicode
Catégories cachées :
  • Article à recycler/Liste complète
  • Article à recycler
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés
  • Portail:Écriture/Articles liés
  • Portail:Langues/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id