json_encode()
http://php.net/manual/en/function.json-encode.php的php maual说:
第一个输入参数值的所有字符串数据必须是UTF-8编码。
这是否真的意味着字符串数据不得包含任何0x00 byte
(在unicode中可能出现)?
我知道如果输入参数是在utf-8中编码的有效字符串就可以了。但是,如果输入字符串是有效的GBK编码字符串呢?伙计们,你对GBK和我的意思一无所知吗?
答案 0 :(得分:0)
这意味着数据必须是有效的UTF-8。 utf8encode函数将ISO-8859-1转换为UTF-8,所以如果你已经有了,那么就不需要对它进行双重编码。
A comment utf8_encode manual page我认为是正确的。utf8_encode仅将ISO-8859-1中编码的字符串转换为UTF-8。一个 更合适的名称是“iso88591_to_utf8”。如果你的文字 未在ISO-8859-1中编码,您不需要此功能。如果你的 文本已经是UTF-8,您不需要此功能。事实上, 将此函数应用于未在ISO-8859-1中编码的文本 很可能只是简单地说出那个文字。
所以你的问题的答案是否定的,这并不意味着。反之亦然。如果它是有效的UTF-8,那就没关系。
答案 1 :(得分:0)
不,这意味着该字符串必须是有效的UTF-8。 0x00
是Unicode字符U + 0000,在UTF-8中编码为0x00
。
php > var_dump(json_encode(["\x00"]));
string(10) "["\u0000"]"