UCS2/HexEncoded Zeichen auf UTF-8 in php
Fragte ich eine Frage vorher um ein UCS-2/HexEncoded string von UTF-8, und ich bekam etwas Hilfe von einigen Jungs, unter dem folgenden link.
Aber jetzt brauche ich, um die korrekten UTF-8 UCS-2/HexEncoded string in PHP.
Für die folgenden Zeichenfolgen:
00480065006C006C006F zurück 'Hallo'
06450631062d0628064b06270020063906270644064500200021 zurück (!مرحبا عالم) in Arabisch
- Was war nicht klar genug in den Antworten zu deiner vorherigen Frage?
- Ich brauche, um die utf8-aus dem ucs2 hex-kodierter string, ich meine, ich muss wieder von ucs2-hex-kodiert nach utf8
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie bauen eine Hex-Darstellung durch die Umwandlung der hexadezimalen Zeichen mit hexdec(), Verpacken Komponente chars, und dann mit mb_convert_encoding() die Konvertierung von UCS-2 in UTF-8. Wie ich bereits in meiner Antwort zu deiner anderen Frage, du musst noch vorsichtig sein mit dem output-encoding, aber hier haben Sie speziell angefordert UTF-8, also werden wir verwenden, dass für die anstehende Probe.
Hier ist von einer Stichprobe, die die Arbeit der Konvertierung von UCS-2 in Hex UTF-8 in den nativen string-form. Als PHP-derzeit nicht-Schiff mit einer hex2bin () - Funktion, das würde die Dinge sehr einfach, wir werden mit einem Aushang an den Referenz-link am Ende. Ich habe es umbenannt, um local_hex2bin() nur, falls es Konflikte mit einer zukünftigen version von PHP oder mit einer definition in einigen anderen 3rd-party-code, den Sie in Ihr Projekt aufnehmen.
Lokal, als ich diese Beispiel-Seite UCS2HexToUTF8.php und dann verwendet eine querystring-Parameter für die Ausgabe.
Hier ist der link zur ursprünglichen Quelle der hex2bin() Funktion.
PHP: bin2hex(), Kommentar #86123 @ php.net
Auch, wie bereits in meinen Kommentaren vor dem Aufruf mb_convert_encoding(), werden Sie wahrscheinlich wollen, um zu versuchen und zu erkennen, welche endian ist die Reihenfolge von der Quelle, vor allem, wenn Ihre Anwendung hat die Teile, in denen eine oder mehrere CPUs auf einem server unterscheiden sich vom rest durch eine Orientierung.
Hier ist ein link, die Ihnen helfen können identifizieren das byte-order-Mark (BOM).
Byte order mark) @ Wikipedia
$querystring = '06450631062d0628064b06270020063906270644064500200021';
$str = pack('H*', $querystring);
$ucs2string = mb_convert_encoding($str, 'UTF-8', 'UCS-2');
Mehr präzise Konvertierung von UCS-2 auf UTF-8
Das problem auf ausgewählte Antwort ist, es war geteilt durch 2 statt 4, die Ursache wäre der Konvertierung 00 als null und Ursache für diesen � zu erscheinen, wenn er auf html-Attribute Werte wie title="" oder alt=""