在我的控制器中,我以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编码
答案 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