Maison  >  Article  >  développement back-end  >  Comment convertir utf8 en unicode en php ?

Comment convertir utf8 en unicode en php ?

coldplay.xixi
coldplay.xixioriginal
2020-07-13 10:17:172837parcourir

Comment convertir UTF8 en Unicode en PHP : Extrayez d'abord le premier octet 0100 ; puis décalez le résultat vers la gauche de 12 bits puis extrayez 111101, décalez le résultat vers la gauche de 6 bits et le résultat obtenu ; par l'octet le plus élevé est OR ; enfin, par analogie, le nième bit est directement AND avec 111111 [0x3F].

Comment convertir utf8 en unicode en php ?

Comment convertir utf8 en unicode en php :

Bien sûr, la conversion d'UTF-8 en Unicode se fait également par migration. Ce qui se fait par bits et ainsi de suite, c'est extraire les nombres binaires aux positions correspondantes au format UTF-8.

Dans l'exemple "vous" fait trois octets, donc chaque octet doit être traité, du bit haut au bit bas. En UTF-8, « vous » vaut 11100100,10111101,10100000. En partant du bit haut, le premier octet 11100100 consiste à retirer le "0100". C'est très simple. Il suffit de prendre le AND (&) avec 11111 (0x1F), on peut savoir que la position la plus élevée doit être. être avant le 12ème bit, car six chiffres sont pris à chaque fois. Par conséquent, le résultat obtenu doit être décalé de 12 bits vers la gauche, et le bit le plus élevé est désormais 0100,000000,000000.

Le deuxième bit consiste à supprimer "111101", il vous suffit donc de AND (&) le deuxième octet 10111101 et 111111 (0x3F). Après avoir décalé le résultat de 6 bits vers la gauche et pris le résultat de l'octet le plus élevé ou (|), le deuxième bit est terminé et le résultat est 0100,111101,000000. Par analogie, le dernier chiffre est directement combiné par AND (&) avec 111111 (0x3F), puis par OR (|) avec le résultat précédent pour obtenir le résultat 0100,111101,100000.

/**
 * utf8字符转换成Unicode字符
 * @param [type] $utf8_str Utf-8字符
 * @return [type]      Unicode字符
 */
function utf8_str_to_unicode($utf8_str) {
  $unicode = 0;
  $unicode = (ord($utf8_str[0]) & 0x1F) << 12;
  $unicode |= (ord($utf8_str[1]) & 0x3F) << 6;
  $unicode |= (ord($utf8_str[2]) & 0x3F);
  return dechex($unicode);
}
/**
 * Unicode字符转换成utf8字符
 * @param [type] $unicode_str Unicode字符
 * @return [type]       Utf-8字符
 */
function unicode_to_utf8($unicode_str) {
  $utf8_str = &#39;&#39;;
  $code = intval(hexdec($unicode_str));
  //这里注意转换出来的code一定得是整形,这样才会正确的按位操作
  $ord_1 = decbin(0xe0 | ($code >> 12));
  $ord_2 = decbin(0x80 | (($code >> 6) & 0x3f));
  $ord_3 = decbin(0x80 | ($code & 0x3f));
  $utf8_str = chr(bindec($ord_1)) . chr(bindec($ord_2)) . chr(bindec($ord_3));
  return $utf8_str;
}

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

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