在本地服务器上使用php json_encode时遇到问题

时间:2012-09-28 12:11:07

标签: php encoding utf-8 wamp json

在我的控制器中,我以xml的形式从Affilinet API获取产品数据,并为产品列表创建一个html字符串。之后我使用php json_encode函数对包含该html的数组进行编码,类似于

$data = array('listHtml' => $listHtml,'pagingHtml':$pagingHtml);
echo json_encode($data);

在我的登台和实时服务器上,代码工作得很好,但是使用相同的数据,代码会在本地服务器上返回给我

{"listHtml":null,"pagingHtml":"some html"}

$ listHtml包含一些德语字符。问题是在我的在线服务器上,代码将$ listHtml视为UTF-8编码,但在本地服务器上,它被视为其他东西。

除此之外,如果我打印出包含一些德语字符的字符串,它在在线服务器上运行正常,但德语字符在本地服务器上搞乱了。那么如何配置本地服务器以将文本解释为UTF-8编码

2 个答案:

答案 0 :(得分:2)

在实际json_encode HTML之前,您可以使用utf8_encode对字符串进行UTF-8编码。

$data = array('listHtml' => utf8_encode($listHtml),'pagingHtml' => utf8_encode($pagingHtml));
echo json_encode($data);

可能发生这种情况的原因是,如果你的HTML有一些不同于UTF-8的编码而不支持德语字符,json_encode可能无法解析给定的输入。

例如:

echo json_encode(array('a' => mb_convert_encoding('Üß', 'ISO-8859-1', 'UTF-8')));

由于ISO-8859-1编码字符串中的德语字符而返回{"a":null}

答案 1 :(得分:1)

如果您使用Apache,那么您可以更改httpd.conf文件并添加或更改(如果已经存在):

    AddDefaultCharset utf-8