Frage

Kann mir jemand helfen? Wie könnte ich UCS2/Hexencoded -Charaktere bekommen?

Wie 'Hello' wird zurückkehren "00480065006C006C006F"

Dies sind die hexencodierten Werte:

0048 = H 0065 = E 006C = L 006C = L 006F = O*

Auch auf Arabisch (! مرحبا عالم) wird 06450631062D0628064B0627002006390627064064500200021 zurückkehren

Wie kann ich den codierten UCS2 in PHP bekommen?

War es hilfreich?

Lösung

mb_convert_encoding ($ str, 'ucs-2', 'auto') Funktioniert korrekt, um die Zeichenfolge zu konvertieren, aber Sie müssen zusätzliche Arbeiten ausführen, um die richtige Ausgabe in einem Browser zu erhalten.

Sie müssen den Zeichensatz Ihrer Ausgabe so ändern, dass Sie mit UCS-2 übereinstimmen, um verwenden zu können Echo Um es auf eine Seite auszugeben. Möglicherweise müssen Sie den Inhaltstyp über a möglicherweise festlegen Meta Tag im Kopf.

Ich habe hier drei Beispiele in die folgenden Unicode-Varianten aufgenommen: UCS-2, UTF-16 und UTF-8; Da nicht alle von ihnen für mich gearbeitet haben, ohne im Internet Explorer zu optimieren. Möglicherweise müssen Sie Ihre PHP-Dateien in UTF-8 speichern, um die richtigen Ergebnisse zu erzielen. Außerdem bin ich in einer englischen Version von Windows, daher kann ich Ihre arabische Zeichenfolge nicht in ein ordnungsgemäßem RTL -Formular eingeben. Es tut mir leid, wenn Ihre Schnur hier verstümmelt ist. Ich versichere Ihnen, dass Sie das richtige Ergebnis erhalten, wenn Sie es an dem von meinen Kommentaren festgestellten Ort ersetzen. Schließlich haben Sie möglicherweise Schwierigkeiten, UCS-2 und UTF-16 im Internet Explorer anzusehen-es scheint einige Kuriositäten zu geben, wenn die Ausgabe über einen Cache neu geladen wird. Firefox 3.5.5 arbeitete jedoch für alle drei Codierungen. Wenn Sie es ernst meinen, eine App zu erstellen, empfehle ich dringend, UTF-8 anstelle von UCS-2 zu verwenden.

UCS-2-Version

Firefox 3.5.5 (OK, aber Firefox sagt, es sei UTF-16BE in meinem Test.)
Internet Explorer 7.0 (nicht in Ordnung. Arabisch nicht richtig erkannt/konvertiert.)

<?php
header('Content-Type: text/html; charset=UCS-2');
mb_http_output('UCS-2');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UCS-2" /></head><body>', 'UCS-2', 'auto');
echo mb_convert_encoding('encoding: ', 'UCS-2', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UCS-2', 'auto');
echo mb_convert_encoding('<br />', 'UCS-2', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UCS-2', 'auto')).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('</body>', 'UCS-2', 'auto');
?>

UTF-16-Version

Firefox 3.5.5 (100% OK)
Internet Explorer 7.0 (fehlschlag. Möglicherweise muss Byte-Order angegeben.)

<?php
header('Content-Type: text/html; charset=UTF-16');
mb_http_output('UTF-16');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /></head><body>', 'UTF-16', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-16', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-16', 'auto');
echo mb_convert_encoding('<br />', 'UTF-16', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-16', 'auto')).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('</body>', 'UTF-16', 'auto');
?>

UTF-8

Firefox 3.5.5 (100% OK)
Internet Explorer 7.0 (100% OK)

<?php
header('Content-Type: text/html; charset=UTF-8');
mb_http_output('UTF-8');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>', 'UTF-8', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-8', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-8', 'auto');
echo mb_convert_encoding('<br />', 'UTF-8', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-8', 'auto')).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('</body>', 'UTF-8', 'auto');
?>

Andere Tipps

Entsprechend Diese Webseite, Das Multi-Byte-String-Modul (Mbstring) unterstützt UCS-2. Nachdem Sie dieses Modul aktiviert haben, können Sie die Funktion verwenden mb_convert_encoding Um eine Zeichenfolge von einer Codierung in den anderen zu konvertieren.

Zitieren die Dokumentation der Funktion mb_convert_encoding:

string mb_convert_encoding  ( string $str  , string $to_encoding  [, mixed $from_encoding  ] )
Converts the character encoding of string str to to_encoding from optionally from_encoding . 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top