19

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

一切都很顺利,除了使用像法语这样的特殊字符(é,è,à...)

如果我像 (é , è , à) 一样对它们进行预编码(这里我在与号和单词的其余部分之间使用空格来防止在我的问题中自动编码)它可以工作,但是当使用 jquery 呈现字符时不会转换为应有的样子 (é...),而是按原样显示 (é)

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

我应该在这里做什么?

谢谢。

4

3 回答 3

8

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

我应该在这里做什么?

在 JSON 中,您不对值进行 HTML 编码。您按字面意思发送它们 (é) 并正确设置 set Content-Type:

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

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

于 2011-09-02T14:03:34.450 回答
7

这对我有用,希望它对遇到类似问题的其他人有用。

$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的详细信息,请参见此处

于 2014-10-22T16:04:53.667 回答
6

就像第一个回答者

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

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

于 2011-09-02T14:50:41.170 回答