Heim Backend-Entwicklung PHP-Problem So konvertieren Sie PHP utf8 in Unicode

So konvertieren Sie PHP utf8 in Unicode

Jul 18, 2020 am 09:29 AM
unicode utf8

So konvertieren Sie PHP utf8 in Unicode: Definieren Sie dann eine „utf8_str_to_unicode“-Methode. Implementieren Sie dann die Konvertierungsfunktion über die Funktionen ord und dechex.

So konvertieren Sie PHP utf8 in Unicode

PHP implementiert die gegenseitige Konvertierung zwischen Unicode und Utf-8-Kodierung

Seit kurzem muss ich zufällig Unicode verwenden Bei der Kodierungskonvertierung habe ich die Bibliotheksfunktionen von PHP überprüft, konnte aber keine Funktion finden, die Unicode-Strings kodieren und dekodieren kann! Wenn Sie es nicht finden können, implementieren Sie es einfach selbst. . .

Der Unterschied zwischen Unicode und Utf-8-Codierung

Unicode ist ein Zeichensatz, und UTF-8 ist einer von Unicode mit fester Länge , während UTF-8 variabel ist, belegt Unicode 1 Byte weniger als UTF-8. Unicode besteht aus Doppelbytes, während chinesische Zeichen in UTF-8 drei Bytes belegen.

UTF-8-kodierte Zeichen können theoretisch bis zu 6 Byte lang sein, aber 16-Bit-BMP-Zeichen (Basic Multilingual Plane) können nur bis zu 3 Byte lang sein. Werfen wir einen Blick auf die UTF-8-Kodierungstabelle: Die Position von

1

2

3

4

5

6

U-00000000 - U-0000007F: 0xxxxxxx

U-00000080 - U-000007FF: 110xxxxx 10xxxxxx

U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Nach dem Login kopieren

xxx wird durch die binäre Darstellung der Zeichenkodierungsnummer ausgefüllt. Das weiter rechts stehende x hat eine weniger spezielle Bedeutung und nur das Die kürzeste Zahl reicht aus, um sie auszudrücken. Eine aus mehreren Bytes bestehende Zeichenkette, die Zahlen kodiert. Beachten Sie, dass in einer Multibyte-Zeichenfolge die Anzahl der „1“ am Anfang des ersten Bytes der Anzahl der Bytes in der gesamten Zeichenfolge entspricht. Die erste Zeile beginnt mit 0, um mit der ASCII-Codierung kompatibel zu sein. Dies entspricht einem Byte, die zweite Zeile ist eine Doppelbyte-Zeichenfolge und die dritte Zeile besteht aus 3 Bytes, z. B. chinesischen Zeichen usw. (Persönlich denke ich: Tatsächlich können wir die Anzahl der Einsen vor uns einfach als Anzahl der Bytes betrachten)

So konvertieren Sie Unicode in Utf-8

In Um Unicode in UTF-8 zu konvertieren, müssen Sie natürlich wissen, was der Unterschied ist. Schauen wir uns an, wie die Codierung in Unicode in UTF-8 konvertiert wird. Wenn das Byte eines Zeichens kleiner als 0x80 (128) ist, handelt es sich um ein ASCII-Zeichen, das ein Byte einnimmt, und es erfolgt keine Konvertierung erforderlich, da UTF-8 mit der ASCII-Kodierung kompatibel ist. Wenn die Codierung des chinesischen Zeichens „you“ in Unicode „u4F60“ ist, konvertieren Sie es in die Binärform 100111101100000 und konvertieren Sie es dann gemäß der UTF-8-Methode. Binärziffern können aus der Unicode-Binärdatei von niedrig nach hoch entnommen werden, wobei jeweils 6 Bits eingenommen werden. Die obige Binärziffer kann beispielsweise in das unten gezeigte Format übernommen werden mehr als 8 Bits werden mit 0 aufgefüllt.

1

2

unicode: 100111101100000                   4F60

utf-8:    11100100,10111101,10100000       E4BDA0

Nach dem Login kopieren

Von oben können Sie die Konvertierung zwischen Unicode und UTF-8 intuitiv erkennen. Nachdem Sie das Format von UTF-8 kennen, können Sie natürlich die umgekehrte Operation ausführen, d. h. es in binär konvertieren Nehmen Sie es entsprechend dem Format aus der entsprechenden Position heraus und konvertieren Sie es dann in das resultierende Unicode-Zeichen (dieser Vorgang kann durch „Verschiebung“ abgeschlossen werden). Beispielsweise kann bei der obigen Konvertierung von „Sie“ der Wert als Drei-Byte-Speicher beurteilt werden, da sein Wert größer als 0x800 und kleiner als 0x10000 ist. Dann muss das höchste Bit um „12“ Bits nach rechts verschoben werden und dann ist das höchste Bit gemäß dem Drei-Byte-Format 11100000 (0xE0) oder (|), um den höchsten Wert zu erhalten. Auf die gleiche Weise wird die zweite Ziffer um „6“ Bits nach rechts verschoben und der Binärwert der höchsten Ziffer und der zweiten Ziffer nach links verschoben. Dies kann durch Ausführen der Positionsoperation (&) mit 111111 (0x3F) berechnet werden ) und dann mit 11000000 (0x80 oder (|)) summiert. Das dritte Bit muss nicht verschoben werden. Nehmen Sie einfach die letzten sechs Bits direkt (& mit 111111 (ox3F)) und verknüpfen Sie sie dann mit ODER (|) mit 11000000 (0x80).

So kehren Sie UTF-8 wieder in Unicode um

Natürlich erfolgt die Konvertierung von UTF-8 nach Unicode auch durch Verschiebung usw., d.h. Beim Konvertieren von UTF-8 wird die Binärzahl an der entsprechenden Position des Formats extrahiert. Im obigen Beispiel besteht „you“ aus drei Bytes, daher muss jedes Byte verarbeitet werden, vom High-Bit bis 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.

Das Ergebnis muss also 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 dann mit dem vorherigen Ergebnis ODER-verknüpft (|), um das Ergebnis 0100,111101,100000 zu erhalten.

PHP-Code-Implementierung

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

/**

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

}

Nach dem Login kopieren

Getestet

1

2

3

4

5

6

7

$utf8_str = &#39;我&#39;;

//这是汉字“你”的Unicode编码

$unicode_str = &#39;4f6b&#39;;

//输出 6211

echo utf8_str_to_unicode($utf8_str) . "<br/>";

//输出汉字“你”

echo unicode_str_to_utf8($unicode_str);

Nach dem Login kopieren

Die oben genannten Konvertierungen sind Tests für chinesische Zeichen [die im Allgemeinen nicht ASCII sind], denn wenn sie ASCII sind, ist es das Wiederholen Sie das Gleiche, sodass Sie sich nicht so viel Mühe geben müssen.

Außerdem sind diese beiden Funktionen einfach implementiert und unterstützen nur die Konvertierung einzelner Zeichen [ein vollständiges UTF8-Zeichen oder ein vollständiges Unicode-Zeichen]. Wenn Sie es verstehen, können Sie es genießen. . .

Empfohlen: „PHP-Tutorial

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

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie viele Bytes belegen utf8-codierte chinesische Zeichen? Wie viele Bytes belegen utf8-codierte chinesische Zeichen? Feb 21, 2023 am 11:40 AM

UTF8-kodierte chinesische Zeichen belegen 3 Bytes. Bei der UTF-8-Kodierung entspricht ein chinesisches Zeichen drei Bytes und ein chinesisches Satzzeichen belegt drei Bytes, während bei der Unicode-Kodierung ein chinesisches Zeichen (einschließlich traditionellem Chinesisch) zwei Bytes entspricht. UTF-8 benötigt zur Kodierung jedes Zeichens nur 1 Byte. Für Latein, Griechisch, Kyrillisch und Hebräisch sind 2 Byte erforderlich Codierung.

Vertiefendes Verständnis von PHP: Implementierungsmethode zur Konvertierung von JSON Unicode in Chinesisch Vertiefendes Verständnis von PHP: Implementierungsmethode zur Konvertierung von JSON Unicode in Chinesisch Mar 05, 2024 pm 02:48 PM

Vertiefendes Verständnis von PHP: Implementierungsmethode zum Konvertieren von JSONUnicode in Chinesisch Während der Entwicklung stoßen wir häufig auf Situationen, in denen wir JSON-Daten verarbeiten müssen, und die Unicode-Codierung in JSON verursacht in einigen Szenarien einige Probleme, insbesondere wenn Unicode konvertiert werden muss Bei der Kodierung wird in chinesische Zeichen konvertiert. In PHP gibt es einige Methoden, die uns bei der Umsetzung dieses Konvertierungsprozesses helfen können. Im Folgenden wird eine allgemeine Methode vorgestellt und es werden spezifische Codebeispiele bereitgestellt. Lassen Sie uns zunächst das Un in JSON verstehen

So konvertieren Sie Unicode in Chinesisch So konvertieren Sie Unicode in Chinesisch Dec 14, 2023 am 10:57 AM

Unicode ist ein Zeichenkodierungsstandard, der zur Darstellung verschiedener Sprachen und Symbole verwendet wird. Um die Unicode-Kodierung in chinesische Zeichen zu konvertieren, können Sie die in Python integrierten Funktionen chr() und ord() verwenden.

Probieren Sie die Methode aus, um das Problem der verstümmelten chinesischen Zeichen in Eclipse zu lösen Probieren Sie die Methode aus, um das Problem der verstümmelten chinesischen Zeichen in Eclipse zu lösen Jan 03, 2024 pm 05:28 PM

Haben Sie Probleme mit verstümmelten chinesischen Zeichen in Eclipse? Um diese Lösungen auszuprobieren, benötigen Sie konkrete Codebeispiele. 1. Einführung in den Hintergrund Mit der kontinuierlichen Weiterentwicklung der Computertechnologie spielt Chinesisch eine immer wichtigere Rolle in der Softwareentwicklung. Bei der Verwendung von Eclipse für die chinesische Entwicklung stoßen viele Entwickler jedoch auf Probleme mit verstümmeltem Code, was sich auf die Arbeitseffizienz auswirkt. Anschließend werden in diesem Artikel einige häufig auftretende Probleme mit verstümmeltem Code vorgestellt und entsprechende Lösungen und Codebeispiele bereitgestellt, um den Lesern bei der Lösung des chinesischen Problems mit verstümmeltem Code in Eclipse zu helfen. 2. Häufige Probleme mit verstümmeltem Code und Lösungsdateien

PHP-Tutorial: So konvertieren Sie JSON-Unicode in chinesische Zeichen PHP-Tutorial: So konvertieren Sie JSON-Unicode in chinesische Zeichen Mar 05, 2024 pm 06:36 PM

JSON (JavaScriptObjectNotation) ist ein leichtes Datenaustauschformat, das häufig für den Datenaustausch zwischen Webanwendungen verwendet wird. Bei der Verarbeitung von JSON-Daten stoßen wir häufig auf Unicode-codierte chinesische Zeichen (z. B. „u4e2du6587“) und müssen diese in lesbare chinesische Zeichen konvertieren. In PHP können wir diese Konvertierung durch einige einfache Methoden erreichen. Als Nächstes erfahren Sie, wie Sie JSONUnico konvertieren

Lösen Sie das Problem der inkonsistenten Unicode-Zeichensatzkodierung, wenn Java eine Verbindung zur MySQL-Datenbank herstellt Lösen Sie das Problem der inkonsistenten Unicode-Zeichensatzkodierung, wenn Java eine Verbindung zur MySQL-Datenbank herstellt Jun 10, 2023 am 11:39 AM

Mit der Entwicklung von Technologien wie Big Data und Cloud Computing sind Datenbanken zu einem wichtigen Eckpfeiler der Unternehmensinformatisierung geworden. Bei in Java entwickelten Anwendungen ist die Verbindung zur MySQL-Datenbank zur Norm geworden. Bei diesem Vorgang stoßen wir jedoch häufig auf ein heikles Problem: Die Codierung des Unicode-Zeichensatzes ist inkonsistent. Dies wirkt sich nicht nur auf unsere Entwicklungseffizienz aus, sondern auch auf die Leistung und Stabilität der Anwendung. In diesem Artikel erfahren Sie, wie Sie dieses Problem lösen und die Verbindung zwischen Java und der MySQL-Datenbank reibungsloser gestalten können. 1. Unicode

Was sind die Unterschiede zwischen Unicode und ASCII? Was sind die Unterschiede zwischen Unicode und ASCII? Sep 06, 2023 am 11:56 AM

Zu den Unterschieden zwischen Unicode und ASCII gehören unterschiedliche Codierungsbereiche, unterschiedliche Speicherplätze und unterschiedliche Kompatibilität. Detaillierte Einführung: 1. Der Codierungsbereich von ASCII ist unterschiedlich und wird hauptsächlich zur Darstellung englischer Buchstaben verwendet. Der Codierungsbereich von Unicode ist viel breiter und kann fast alle Sprachzeichen darstellen Leerzeichen sind unterschiedlich. ASCII verwendet normalerweise 1 Byte zum Speichern eines Zeichens, während Unicode möglicherweise 2 oder mehr Bytes zum Speichern eines Zeichens verwendet. Unterschiedliche Kompatibilität usw.

Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind? Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind? Feb 08, 2023 am 10:29 AM

Lösung für verstümmelte chinesische Zeichen im Knoten utf8: 1. Überprüfen Sie den Typ von „SarchName“ über „typeof“. 2. Verwenden Sie „Name=iconv.decode(name,‘gbk‘)“, um die Codierung in utf8 zu konvertieren.

See all articles