带有 é 等特殊字符的 json

Posted

技术标签:

【中文标题】带有 é 等特殊字符的 json【英文标题】:json with special characters like é 【发布时间】:2011-11-09 05:12:16 【问题描述】:

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

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

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

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

我应该在这里做什么?

谢谢。

【问题讨论】:

通常不需要实体化东西,因为 jQuery 会为你完成。 @NullUserException: not jQuery “实体化了你的东西”。它甚至根本没有实体化。 @Tomalak 嗯...我指的是.text(),它确实将某些字符转换为它们的html实体等价物(通过createTextNode() @NullUserException:不,它没有。 text() 设置 DOM 节点的 textContent 属性。 HTML 字符实体仅存在于序列化的 HTML 中(即当 HTML 表示为文本时),它们甚至不存在于 DOM 中。 【参考方案1】:

如果我将它们写成 (é) 并且不预编码它们的完整值 此数组条目未显示。

我应该在这里做什么?

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

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

当然要声明数据的编码方式。

【讨论】:

好的,我只是在将发送 json 响应的文件中的 json_encode() 之前添加了这个标头,并尝试了两种方式(é 和 &eacute)但仍然是同样的问题 @medk:首先:停止尝试&eacute。您在这里处理的不是 HTML,所以这与您的问题根本无关。您是刚刚尝试了未修改的标头还是使用了数据的实际编码? 是的,我在 firefox 中为显示结果的页面明确设置了 utf-8 编码,并尝试了包含两种类型(正常和编码)的响应,正常从不显示,而 pre-编码显示原样,所以总是同样的问题 @medk:您在 Firefox 中设置的编码无关紧要。您必须确保服务器发送广告编码中的字符:当标头显示 UTF-8 时,数据必须是 UTF-8。如果您的数据不是 UTF-8(我怀疑不是),那么您必须相应地更改标头。 很好的答案,为我修好了!谢谢:)【参考方案2】:

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

$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的详细信息

【讨论】:

你摇滚!!使用 PHP 库从 mysql utf.8 转换为 Firebase 时为我工作。 好人,对于我的代码函数: echo json_encode(mb_convert_encoding($this->jsonRet, "HTML-ENTITIES", "UTF-8"));【参考方案3】:

就像第一个回答者

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

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

【讨论】:

以上是关于带有 é 等特殊字符的 json的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中读取 é、â 等特殊字符

使用 PDO 插入带有特殊字符的值

Firebase功能不能打印UTF8特殊字符

从 MySQL 数据库中获取带有特殊字母的字符串

BigQuery json 特殊字符 UI 导出问题

在占位符 JSX 中渲染特殊字符