在Perl中,如果我從iso-8859-1到utf8編碼如下。perl utf8從iso-8859-1編碼返回不同的結果到javascript utf8編碼
(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 ...........
如果我解碼perl的結果使用JavaScript,這是我所得到的:
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。數據發送的方式(從Flash到Perl到JavaScript)不會更改任何數據。
的代碼在Perl是:
use Encoding;
from_to($out,"iso-8859-1","utf8",Encode::FB_WARN);
如果我使用默認的UTF8編碼在Perl中,我得到了相同的結果。
這已更新爲包含十六進制轉儲而不是二進制。 我需要一個perl中的編碼方法,它將返回與javascript相同的結果。可以測試using this page。
任何幫助將不勝感激。
你爲什麼編碼二進制數據?編碼對文本字符串有意義。 – choroba 2012-01-27 11:22:19
你粘貼了[二進制數據](http://enwp.org/Action_Message_Format)並將其搞亂了,即使我們進行了替換,這種方式也無法使用,NUL等不可打印的字符將會丟失。 [編輯你的問題](http://stackoverflow.com/posts/9031995/edit)並改爲發佈hexdump。 – daxim 2012-01-27 11:22:27
Websockets(javascript連接)只能傳輸或接收utf8編碼的字符串。如果您傳送任何其他內容,則會發出抱怨並斷開連接。 – Zone12 2012-01-27 13:56:10