Maison  >  Article  >  développement back-end  >  Comment convertir des caractères UTF-8 en points de code UCS-2 en PHP ?

Comment convertir des caractères UTF-8 en points de code UCS-2 en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 02:09:29438parcourir

How to Convert UTF-8 Characters to UCS-2 Code Points in PHP?

Conversion des caractères UTF-8 en points de code UCS-2

Dans cet article, nous explorons comment extraire les points de code UCS-2 de caractères dans une chaîne UTF-8. Nous fournirons une explication détaillée du processus et une implémentation dans les versions PHP 4 ou 5.

Comprendre UTF-8

UTF-8 est une norme de codage de caractères qui représente les caractères Unicode en utilisant un à quatre octets. Pour déterminer le nombre d'octets pour un caractère particulier, examinez l'octet de début :

  • 0xxxxxxx : caractère de 1 octet
  • 110xxxxx : caractère de 2 octets
  • 1110xxxx : Caractère de 3 octets
  • 11110xxx : Caractère de 4 octets

Conversion en UCS-2

UCS-2, également connu sous le nom UTF-16 est un format de codage de caractères qui peut représenter la plupart des caractères Unicode. La conversion de UTF-8 vers UCS-2 considère le nombre d'octets par caractère comme suit :

  • Caractère de 1 octet : Le point de code est directement l'octet UTF-8 valeur.
  • Caractère de 2 octets : Décale le premier octet gauche de 6 bits et au niveau du bit OU avec le deuxième octet.
  • Caractère de 3 octets : Décalez le premier octet restant de 12 bits, le deuxième octet restant de 6 bits, et OU au niveau du bit avec le troisième octet.

Implémentation en PHP 4/5

Pour les versions PHP 4 ou 5, vous pouvez implémenter une fonction pour effectuer cette conversion :

<code class="php">function utf8_char_to_ucs2($utf8) {
    if (!(ord($utf8[0]) & 0x80)) {
        return ord($utf8[0]);
    } elseif ((ord($utf8[0]) & 0xE0) == 0xC0) {
        return ((ord($utf8[0]) & 0x1F) << 6) | (ord($utf8[1]) & 0x3F);
    } elseif ((ord($utf8[0]) & 0xF0) == 0xE0) {
        return ((ord($utf8[0]) & 0x0F) << 12) | ((ord($utf8[1]) & 0x3F) << 6) | (ord($utf8[2]) & 0x3F);
    } else {
        return null; // Handle invalid characters or characters beyond UCS-2 range
    }
}</code>

Exemple d'utilisation

<code class="php">$utf8 = "hello";
for ($i = 0; $i < strlen($utf8); $i++) {
    $ucs2_codepoint = utf8_char_to_ucs2($utf8[$i]);
    printf("Code point for '%s': %d\n", $utf8[$i], $ucs2_codepoint);
}</code>

Ceci affichera :

Code point for 'h': 104
Code point for 'e': 101
Code point for 'l': 108
Code point for 'l': 108
Code point for 'o': 111

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn