背景: 我的系统的一部分使用utf8_encode将html代码转换为utf8格式,然后再将其传递给json_encode。
问题: 一切都很好,直到我输入UTF8字符(中文)到系统中。我注意到所提到的UTF8字符被编码了两次并且出现了乱码。
旁注: 我没有使用charset编码的经验,直到现在还没有。也许我不需要在json_encode之前使用utf8_encode,因为我的数据库和连接已经设置为utf8。如果没有html代码中的中文字符,mb_detect_encoding将返回ASCII(不是ISO-8859-1)。但是我无法通过json_encode而不返回null ...因此使用utf_8编码直到现在才有效。
更新: 我终于通过将html代码强制转换为字符串解决了这个问题; via(string)$ html;在将其分配给json_encode()之前。
感谢所有发布在这里的人,这让我得到了最终的解决方案。
答案 0 :(得分:1)
我有类似的问题。也许这会有所帮助:尝试使用iconv();
。我在使用utf8的编码时遇到了波兰字符(ąężćźłóń等)的一些问题 - 当我使用json_encode
时,没有输出。使用iconv();
后,一切都很顺利。问题是,在继续之前,您必须知道源编码。如果您不知道编码,请使用mb_detect_encoding()
作为@Lukas建议。例如:
$content = iconv('ISO-8859-2','UTF-8', $content);
echo json_encode(array('content' => $content));