json有像é这样的特殊字符

时间:2011-09-02 13:58:14

标签: php jquery json htmlspecialchars

我正在使用jQuery,PHP和JSON作为响应开发一个依赖选择脚本。

除了使用像法国人(é,è,à...)

这样的特殊字符外,一切顺利

如果我像(& eacute;,& egrave;,& agrave;)那样对它们进行预编码(这里我在&符号之间使用空格以防止在我的问题中自动编码)它有效,但是当使用jquery渲染时,字符不会转换为它们应该看起来的样子(é...),而是显示为(& eacute;)

如果我将它们写成(é)并且不对它们进行预编码,则不会显示此数组条目中的完整值。

我该怎么办?

感谢。

3 个答案:

答案 0 :(得分:8)

  

如果我像(é)那样写它们并且不对它们进行预编码   此数组条目未显示。

     

我该怎么办?

在JSON中,您不对HTML进行编码。您按字面意思(é)发送它们并正确设置内容类型:

header('Content-Type: application/json; Charset=UTF-8');

当然,声明您的数据所在的编码。

答案 1 :(得分:6)

就像第一个anwser一样

您使用数据库吗?如果是,请确保将数据库表声明为UFT8 如何声明HTML页面? UTF-8 是PHP脚本文件中的字符串?如果是,请确保该文件具有UTF-8文件格式

你也可以使用utf8_encode(发送到HTML)和utf8_decode(接收)但不是正确的方式

答案 2 :(得分:6)

这对我有用,希望它对任何遇到类似问题的人都有效。

$title = 'é';
$title = mb_convert_encoding($title, "UTF-8", "HTML-ENTITIES");

header('Content-Type: application/json; Charset="UTF-8"');
echo json_encode(array('title' => $title));

mb_convert_encoding函数接受一个值并将其从(在本例中)HTML-ENTITIES转换为UTF-8。

有关功能http://php.net/manual/en/function.mb-convert-encoding.php

的详细信息,请参阅此处