0

背景:我系统的一部分使用 utf8_encode 将 html 代码转换为 utf8 格式,然后再将其传递给 json_encode。

问题:一切都很好,直到我将 UTF8 字符(中文)输入系统。我注意到提到的 UTF8 字符被编码两次并且出现乱码。

旁注:直到现在我还没有字符集编码的经验。也许我不需要在 json_encode 之前使用 utf8_encode,因为我的数据库和连接已经设置为 utf8。如果 html 代码中没有中文字符,mb_detect_encoding 将返回 ASCII(不是 ISO-8859-1)。但是我无法通过 json_encode 而不返回 null ...因此使用 utf_8 编码一直有效。

更新:我终于通过将 html 代码类型转换为字符串解决了这个问题;通过(字符串)$ html;在将其分配给 json_encode() 之前。

感谢所有在这里发帖的人,他们让我找到了最终的解决方案。

4

1 回答 1

1

我有类似的问题。也许这会有所帮助:尝试使用iconv();. 我在 utf8 以外的编码中遇到了波兰字符(ąężćźłóń 等)的一些问题 - 当我使用 时json_encode,没有输出。使用后一切都很顺利iconv();。问题是,您必须在继续之前了解源编码。如果您不知道编码,请mb_detect_encoding()按照@Lukas 的建议使用。例子:

$content = iconv('ISO-8859-2','UTF-8', $content);
echo json_encode(array('content' => $content));
于 2013-05-14T09:39:40.687 回答