2013-11-04 68 views
-2

php maual json_encode()http://php.net/manual/en/function.json-encode.php說: 第一個輸入參數值的所有字符串數據都必須是UTF-8編碼的。php json_encode UTF-8

是否真的意味着字符串數據不得包含任何0x00 byte(Unicode中可能出現的)?

我知道這將是確定的,如果輸入的參數是UTF-8編碼的有效字符串。但是如果輸入字符串是一個有效的GBK編碼的字符串呢?夥計們,你知道關於GBK的一切嗎?我的意思是?

回答

0

這意味着,數據必須是有效的UTF-8。 utf8encode函數將ISO-8859-1轉換爲UTF-8,所以如果你已經有了,不需要對它進行雙重編碼。

A commentutf8_encode manual page我認爲是正確的:

函數utf8_encode只有在轉換ISO-8859-1編碼成UTF-8的字符串。爲它 更合適的名稱將是「iso88591_to_utf8」。如果您的文本 沒有在ISO-8859-1編碼的,你不需要這個功能。如果您的 文本已經在UTF-8中,則不需要此功能。事實上, 使用該功能的文本未在ISO-8859-1編碼將 最有可能只是斷章取義的文本。

所以你的問題的答案是否定的,這並不意味着。反之亦然。如果它是有效的UTF-8,那就沒問題。

+2

嘿,我寫了那條評論! – deceze

+0

@deceze所以它似乎:) – eis

0

不,它表示字符串必須是有效的UTF-8。 0x00是Unicode字符U + 0000,編碼爲UTF-8中的0x00

php > var_dump(json_encode(["\x00"])); 
string(10) "["\u0000"]"