Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiert man utf8 in PHP in Unicode?

Wie konvertiert man utf8 in PHP in Unicode?

coldplay.xixi
coldplay.xixiOriginal
2020-07-13 10:17:172837Durchsuche

So konvertieren Sie UTF8 in Unicode in PHP: Extrahieren Sie zuerst das erste Byte 0100, verschieben Sie dann das Ergebnis um 12 Bits nach links. Extrahieren Sie dann 111101, verschieben Sie das Ergebnis um 6 Bits nach links und erhalten Sie das Ergebnis indem das höchste Byte ODER-verknüpft wird; analog dazu wird das n-te Bit direkt mit 111111 [0x3F] UND-verknüpft.

Wie konvertiert man utf8 in PHP in Unicode?

So konvertieren Sie utf8 in Unicode in PHP:

Natürlich die Konvertierung von UTF-8 nach Unicode Dies geschieht auch durch Migration. Bits usw. dienen dazu, die Binärzahlen an den entsprechenden Positionen im UTF-8-Format zu extrahieren.

Im Beispiel besteht „Sie“ aus drei Bytes, daher muss jedes Byte verarbeitet werden, vom High-Bit zum Low-Bit. In UTF-8 ist „Sie“ 11100100,10111101,10100000. Ausgehend vom High-Bit, also dem ersten Byte 11100100, ist es ganz einfach, das UND (&) mit 11111 (0x1F) zu verbinden Die höchste Position muss vor dem 12. Bit liegen, da jedes Mal sechs Ziffern verwendet werden. Daher muss das erhaltene Ergebnis um 12 Bit nach links verschoben werden, und das höchste Bit ist jetzt 0100.000000.000000.

Das zweite Bit besteht darin, „111101“ herauszunehmen, Sie müssen also nur das zweite Byte 10111101 und 111111 (0x3F) UND (&) verknüpfen. Nachdem das Ergebnis um 6 Bit nach links verschoben und das Ergebnis des höchsten Bytes oder (|) genommen wurde, ist das zweite Bit vervollständigt und das Ergebnis ist 0100,111101,000000. Analog dazu wird die letzte Ziffer direkt mit 111111 (0x3F) UND-verknüpft (&) und anschließend mit dem vorherigen Ergebnis ODER-verknüpft (|), um das Ergebnis 0100,111101,100000 zu erhalten.

/**
 * 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;
}

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung

Das obige ist der detaillierte Inhalt vonWie konvertiert man utf8 in PHP in Unicode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn