【发布时间】:2013-03-11 17:30:06
【问题描述】:
我正在尝试将字符串从客户端 JavaScript 发送到后端 PHP 脚本。该字符串包含特殊引号,例如 ’ 和 “。
当我在 Chrome 中查看控制台时,我可以看到这些是在 POST 标头中按原样发送的。在 PHP 方面,我立即将 json_encode() $_POST 数组发送回去,看看它收集了什么。特殊字符现在看起来像这样\u2019。 这是为了测试,请注意我通常会清理所有帖子数据。
我希望使用 UTF-8,但我不确定我缺少什么。我的 HTML 包括:
<meta charset="utf-8">
我的 PHP 服务器将 UTF-8 设置为默认字符集。
如果我开始将此类数据保存到数据库中,我会以这样的字符串结尾:â for ’。但是这不是数据库问题,这些字符在进入数据库之前就已经很糟糕了。 MySQL 纯粹强调它们。
有什么想法吗?
更新
我注意到,如果我不使用 json_encode() 将字符串返回到 javascript,那么它仍然是带有特殊引号(’ 和 “)的原始格式。
【问题讨论】:
-
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />而不是你的元标记? -
这只是正确的输出,UTF-8 字符应该像 JSON 中的
\uXXXX一样编码。 @Jon:那是一样的,只是在 HTML 5 语法中。顺便说一句,不要清理您的 POST 数据,在输出/使用数据时使用正确的转义/编码。 -
没有指定,所以我假设 XHTML 或 HTML 4.x ^^ 但是@MarcelKorpel 是正确的,在
json_encode之后返回正确。 -
您的数据库问题似乎更像是编码问题。你使用 UTF-8 作为排序规则吗?
标签: php javascript post encoding utf-8