質問
いずれかが私を助けることができますか?どのように私は得ることができるUCS2 / HexEncoded文字
のように 'こんにちは' を返します "00480065006C006C006F"
このはHexEncoded値は次のとおりです:
0048 = H 0065 = E 006C = L 006C = L 006F = O *
また、アラビア語で(!مرحباعالم)06450631062d0628064b06270020063906270644064500200021を返します。
私はPHPでエンコードされたUCS2を取得できますか?
解決
の の(「自動」、「UCS-2」、$ strの)mb_convert_encoding文字列を変換するために正しく動作しますが、ブラウザに適切な出力を得るために余分な作業を行う必要があるでしょう。
あなたはそれがページに出力するのエコーのを使用することができるようにするために、UCS-2に合わせて出力の文字セットを変更する必要があります。また、あなたにも、ヘッダー内のメタのタグを介してのContent-Typeを設定する必要があります。
私はここで、以下のユニコード変種で3例含まれている:UCS-2、UTF-16、およびUTF-8を、ではないそれらのすべては、Internet Explorerで微調整することなく、私のために働きました。あなたは適切な結果を得るために、UTF-8であなたのPHPファイルを格納する必要があるかもしれません。また、私は、Windowsの英語バージョンにしていますので、私は適切なRTL形式であなたのアラビア文字列を入力することはできません。あなたの文字列がここに化けている場合、私はごめんなさい。私はあなたが私のコメントで指摘した場所でそれを置き換えるならば、あなたは正しい結果を得るでしょうことを保証します。最後に、あなたは、インターネットでのUCS-2を閲覧するトラブルやUTF-16を有していてもよく、出力がキャッシュを経由して再ロードされたときに、いくつかの奇妙があるように思わexplorer-。しかし、FireFoxの3.5.5は、すべての3つのエンコーディングのために働きました。アプリを作ることについて深刻なら、私は強くあなたがUTF-8の代わりに、UCS-2を使用することを検討してお勧めします。
UCS-2バージョン
のFireFox 3.5.5(OK、しかし、Firefoxは、それは私のテストにUTF-16BEであると言います。)
Internet Explorerの7.0(OKでない。適切にアラビア語を変換/検出できませんでした。)
<?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バージョン
のFireFox 3.5.5(100%OK)
Internet Explorerの7.0(失敗が。バイト順序を指定する必要があります。)
<?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)
インターネットエクスプローラ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');
?>
他のヒント
によると、このウェブページ、マルチ(mbstringの)バイト文字列モジュールは、UCS-2をサポートしています。このモジュールを有効にしたら、 mb_convert_encoding 他の1つのエンコーディングからの文字列を変換します。
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 .