1

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

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

在我的登台和实时服务器上,代码运行良好,但是使用相同的数据,代码在本地服务器上返回给我

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

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

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

4

2 回答 2

2

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

$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')));

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

于 2012-09-28T12:14:39.413 回答
1

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

    AddDefaultCharset utf-8
于 2012-09-28T12:20:02.917 回答