Cette question concerne l'obtention des points de code UCS-2 pour une chaîne UTF-8 donnée. La tâche consiste à convertir les caractères individuels en points de code UCS-2 correspondants, quelle que soit la langue ou la complexité des caractères.
Représentation du point de code UCS-2
Chaque point de code UCS-2 est stocké sur 1 à 4 octets, en fonction de la valeur du point de code :
Détermination du nombre d'octets
Pour déterminer le nombre d'octets pour un caractère, examinez le premier octet :
Exemple de code C
Voici un exemple de code C pour convertir un caractère UTF-8 en point de code UCS-2 :
<code class="c">wchar_t utf8_char_to_ucs2(const unsigned char *utf8) { if(!(utf8[0] & 0x80)) // 0xxxxxxx return (wchar_t)utf8[0]; else if((utf8[0] & 0xE0) == 0xC0) // 110xxxxx return (wchar_t)(((utf8[0] & 0x1F) << 6) | (utf8[1] & 0x3F)); else if((utf8[0] & 0xF0) == 0xE0) // 1110xxxx return (wchar_t)(((utf8[0] & 0x0F) << 12) | ((utf8[1] & 0x3F) << 6) | (utf8[2] & 0x3F)); else return ERROR; // uh-oh, UCS-2 can't handle code points this high }</code>
Solutions alternatives
Vous pouvez également utiliser des bibliothèques existantes comme iconv ou des bibliothèques spécifiques à votre langage de programmation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!