作者chweng ()
看板PHP
標題Re: [請益] utf-8的二進制轉中文
時間Tue Sep 16 15:28:13 2008
※ 引述《chobitsppc (無止盡的道路)》之銘言:
: 想請問我會從flash接收到一筆資料
: 由utf-8的中文轉成二進制的字串
: 請問我要怎麼把這二進制的字串轉成中文= =?
: 感覺編碼相關的好煩雜
: 網路上的資料也是有看沒懂...orz
: 負責flash的也還不知道能不能轉成二進制...
: 希望能轉不能轉前輩可以解答一下
先確認一件事情,以「我」這個字為例,它的 UTF-8 碼為 e68891,
幾乎大部分的中文字的的 UTF-8 碼長度都是這樣,所以你舉的 01011、0101 等等,
不知道你是隨便打的而已,還是你接收到的資訊根本就有誤?或是並不是 UTF-8 碼?
接下來,假設你收到的是正確的資訊,同樣以「我」這個字為例,
你收到的應該是
e68891,那麼要怎麼以 php 將這串字碼轉變為正確的文字呢?
這樣就可以了,很簡單:
echo "\x
e6\x
88\x
91";
用 hex2bin 函式去轉也可以,不過這個函式沒有內建,要自己建一個:
function hex2bin($input) {
$len = strlen($input);
return pack("H" . $len, $input);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.165.39.8
推 chobitsppc :0101是我亂舉例的,flash會把e68891再轉成二進制的 09/16 18:12
→ chobitsppc :樣子,所以我才說要從二進制轉回去 09/16 18:13
→ chobitsppc :順便問一下e68891是十六進制嗎? 09/16 18:14
→ chweng :我覺得你要不要把二進位碼跟二進位制、十六進位制先 09/16 18:47
→ chweng :搞清楚?或是至少拿出例子來? 09/16 18:48
推 chobitsppc :呃,原來表達有誤嗎...,我最後收到的會是"二進位碼" 09/16 19:21
→ chobitsppc :由utf8中文轉成的二進位碼 09/16 19:22
推 LPH66 :我覺得你想說的應該是raw byte... 09/16 19:38