iso-8859-1からutf8に次のコードをエンコードすると、perlで。perl utf8 iso-8859-1からエンコードするとjavascriptに別の結果が返されるutf8 encode
(00000) 0a0b0111 666c6578 74696d65 05427351 ....flextime.BsQ
(00016) f4aea370 00137469 6d657374 616d7009 ...p..timestamp.
(00032) 05010541 d3c8a8a2 40000004 aff01403 [email protected]
(00048) 61090301 090b0104 01040204 03040404 a...............
(00064) 0501 ..
これが結果です:
(00000) 0a0b0111 666c6578 74696d65 05427351 ....flextime.BsQ
(00016) c3b4c2ae c2a37000 1374696d 65737461 ......p..timesta
(00032) 6d700905 010541c3 93c388c2 a8c2a240 [email protected]
(00048) 000004c2 afc3b014 03610903 01090b01 .........a......
(00064) 04010402 04030404 040501 ...........
私はJavaScriptを使用してperlの結果をデコードした場合、これは私が得るものです:
00000000: 00 0b 00 01 00 11 00 66 00 6c 00 65 00 78 00 74 00 69 00 6d 00 65 00 05 00 42 00 73 00 51 4b a3 |flextimeBsQ.|
00000016: 00 70 00 00 00 13 00 74 00 69 00 6d 00 65 00 73 00 74 00 61 00 6d 00 70 00 09 00 05 00 01 00 05 |ptimestamp.|
00000032: 00 41 04 c8 88 80 00 00 00 00 00 04 fc 14 00 03 00 61 00 09 00 03 00 01 00 09 00 0b 00 01 00 04 |A...a..|
00000048: 00 01 00 04 00 02 00 04 00 03 00 04 00 04 00 04 00 05 00 01 .. .. .. .. .. .. .. .. .. .. .. .. | |
は、誰もがこれで私を助けることができますか?ソースはフラッシュからperlサーバーに送られたAMFオブジェクトで、これをJavaScriptに再送信します。データが(フラッシュからperlからjavascriptに)送られる方法は、データを変更しません。 Perlで
コードは次のとおりです。
use Encoding;
from_to($out,"iso-8859-1","utf8",Encode::FB_WARN);
私はperlで、デフォルトのUTF8エンコードを使用している場合、私は同じ結果を得ます。
バイナリの代わりに16進ダンプを含むように更新されました。 javascriptと同じ結果を返す、perlでencodeメソッドが必要です。テストすることができますusing this page。
ご協力いただければ幸いです。
なぜバイナリデータをエンコードしていますか?エンコーディングはテキスト文字列にとって意味があります。 – choroba
[バイナリデータ](http://enwp.org/Action_Message_Format)を貼り付けてしまってしまいましたが、置換えを行ってもこの方法では使用できません.NULなどの印刷不可能な文字はありません。 [あなたの質問を編集](http://stackoverflow.com/posts/9031995/edit)と代わりにヘキサダンプを投稿してください。 – daxim
ウェブソケット(javascript接続)は、utf8でエンコードされた文字列を送信または受信することしかできません。あなたが他のものを送信すると、それは文句を言って切断するでしょう。 – Zone12