-2

json_encode() http://php.net/manual/en/function.json-encode.php的 php maual说:第一个输入参数值的所有字符串数据必须是 UTF-8 编码。

这是否真的意味着字符串数据不能包含任何内容0x00 byte(在 unicode 中可能出现)?

我知道如果输入参数是用 utf-8 编码的有效字符串就可以了。但是如果输入字符串是一个有效的 GBK 编码字符串呢?伙计们,你对GBK有什么了解吗?我的意思是什么?

4

2 回答 2

0

这意味着数据必须是有效的 UTF-8。utf8encode 函数将 ISO-8859-1 转换为 UTF-8,所以如果你已经有了,就不需要双重编码了。

utf8_encode 手册页的评论我认为是正确的:

utf8_encode 仅将 ISO-8859-1 编码的字符串转换为 UTF-8。更合适的名称是“iso88591_to_utf8”。如果您的文本未使用 ISO-8859-1 编码,则不需要此功能。如果您的文本已经是 UTF-8,则不需要此功能。事实上,将此函数应用于未以 ISO-8859-1 编码的文本很可能只会使该文本出现乱码。

所以你的问题的答案是否定的,这并不意味着。反之亦然。如果它是有效的 UTF-8,那么就可以了。

于 2013-11-04T07:56:44.987 回答
0

不,这意味着字符串必须是有效的 UTF-8。0x00是 Unicode 字符 U+0000,编码为0x00UTF-8。

php > var_dump(json_encode(["\x00"]));
string(10) "["\u0000"]"
于 2013-11-04T07:57:30.730 回答