0

在我的 PHP 网络服务中,我必须返回一些包含带有 JSON 格式重音字母的字符串的数组(我在我的客户端应用程序中使用 JS 解析它们)。

但是该htmlentities函数将包含重音字母的字符串替换为空字符串!如果我不使用htmlentities,我会在json_encode.

$a = array('key' => 'èàìòù');
foreach ($a as $k => $v)
    $a[$k] = htmlentities($v, ENT_QUOTES | ENT_HTML5, 'UTF-8');

json_encode($a);

我也尝试了该ENT_COMPAT选项,但我只得到空值。

请注意,如果我使用print_rbefore打印我的数组htmlentities,则内容没问题。

更多信息:

每个文件都是 UTF-8 w/o BOM 格式(使用 Notepad++ 保存)。我已经尝试添加标题以在我的 PHP 和 HTML 中设置 UTF-8。DB 表为 utf8_unicode_ci 格式。

版本:PHP 5.3.3、MySQL 5.5.30-1。

谢谢您的帮助!

4

1 回答 1

2

您没有指定您遇到的错误json_encode()但我怀疑您的传入数据不是 UTF-8 编码的,这会破坏不必要的htmlentities()调用(您指示期望 UTF-8 数据)和json_encode()(因为函数要求所有输入数据为 UTF-8)。

确保您正在编码的数据实际上是 UTF-8 编码的。到时候你就完全不需要htmlentites()了。

您不是说数据来自哪里,但如果它来自数据库,则有时需要将连接显式设置为 UTF-8。一路看UTF-8

于 2013-07-03T13:52:49.953 回答