Caractères et octets, ce n’est pas pareil
Le nombre de caractères correspond aux lettres que voit un lecteur ; les octets correspondent à la place qu’occupe ce texte une fois stocké dans l’ordinateur. Un même caractère peut occuper un nombre d’octets différent selon l’encodage des caractères (la règle qui convertit les lettres en nombres). Les lettres latines et les chiffres occupent 1 octet dans presque tous les encodages, mais le coréen peut en occuper 2 ou 3 selon l’encodage.
UTF-8 : la norme actuelle
UTF-8 est l’encodage utilisé par les pages web et la plupart des logiciels modernes. Il utilise de 1 à 4 octets selon la valeur du numéro Unicode (point de code) (RFC 3629).
| Plage de points de code | Octets | Exemples |
|---|---|---|
| U+0000 ~ U+007F | 1 | Lettres latines de base, chiffres, symboles de base |
| U+0080 ~ U+07FF | 2 | é, ñ, alphabets grec, cyrillique et arabe |
| U+0800 ~ U+FFFF | 3 | Hangeul, kanji, kana |
| U+10000 ~ U+10FFFF | 4 | La plupart des emojis, écritures anciennes |
Toutes les syllabes hangeul précomposées (가~힣, U+AC00~U+D7A3) se trouvent dans la troisième plage : en UTF-8, chaque syllabe occupe 3 octets. Par exemple, ‘안녕하세요’ (bonjour) fait 5 caractères et 15 octets.
UTF-16
UTF-16, utilisé en interne par JavaScript, Java et Windows, stocke la plupart des caractères sur 2 octets et ceux situés à partir de U+10000, comme les emojis, sur 4 octets (paire de substitution). C’est pourquoi la longueur d’une chaîne en JavaScript compte un emoji pour 2.
EUC-KR : l’encodage coréen à syllabes précomposées
EUC-KR est un encodage fondé sur la norme industrielle coréenne KS X 1001. Les lettres latines et les chiffres y occupent 1 octet, et les caractères de KS X 1001, 2 octets. KS X 1001 comprend 2 350 syllabes hangeul d’usage courant, 4 888 hanja (caractères chinois), les kana, les alphabets grec et cyrillique et de nombreux symboles.
Le problème, c’est que sur les 11 172 syllabes du hangeul moderne, seules 2 350 y figurent. Les syllabes absentes de la liste, comme ‘똠’, ‘햏’ ou ‘뷁’, ne peuvent pas être représentées avec les deux octets de l’EUC-KR de base. Une annexe de la norme prévoit une méthode de composition sur 8 octets, mais rares sont les logiciels qui la prennent en charge : elles deviennent donc généralement ‘?’ ou provoquent une erreur.
CP949 : la version étendue
CP949 (le « code hangeul unifié » de Microsoft) étend EUC-KR pour représenter les 11 172 syllabes du hangeul moderne sur 2 octets. Comme il a été la page de code coréenne par défaut de Windows, il reste très répandu dans les documents et systèmes coréens anciens. L’habitude de dire « 1 octet pour l’alphabet latin, 2 octets pour le coréen » vient en grande partie de cet encodage.
Quand les octets comptent
- SMS : en Corée, les services de messagerie annoncent souvent 90 octets pour un SMS et comptent le hangeul pour 2 octets, soit environ 45 caractères coréens. Au-delà, le message devient un message long (LMS) et le tarif peut changer ; vérifiez le critère exact de votre service.
- Champs de base de données : avec des réglages qui mesurent la longueur en octets, comme VARCHAR2 d’Oracle, 20 caractères n’occupent pas la même place en anglais et en coréen. Dans une base UTF-8, chaque syllabe coréenne occupe 3 octets.
- Formulaires administratifs et financiers : les formulaires reliés à des systèmes anciens limitent parfois leurs champs en octets.
Méthode de calcul de cet outil
Les octets UTF-8 sont calculés avec précision à partir du point de code de chaque caractère. Pour EUC-KR et CP949, l’outil vérifie dans la table de caractères réelle de chaque encodage si chaque caractère peut être représenté sur 2 octets. Les caractères non représentables (emojis, syllabes coréennes hors liste, etc.) étant généralement remplacés par un ‘?’ d’un octet, ils sont comptés pour 1 octet et leur nombre est affiché à part. En mode candidature, si vous choisissez le critère ‘Octets (coréen = 2)’, le décompte suit CP949.
Date de référence: 2026-09-23