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 :
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 = ''; $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!