我正在使用jQuery,PHP和JSON作为响应开发一个依赖选择脚本。
除了使用像法国人(é,è,à...)
这样的特殊字符外,一切顺利如果我像(& eacute;,& egrave;,& agrave;)那样对它们进行预编码(这里我在&符号之间使用空格以防止在我的问题中自动编码)它有效,但是当使用jquery渲染时,字符不会转换为它们应该看起来的样子(é...),而是显示为(& eacute;)
如果我将它们写成(é)并且不对它们进行预编码,则不会显示此数组条目中的完整值。
我该怎么办?
感谢。
答案 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
的详细信息,请参阅此处