【问题标题】:JavaScript to PHP - POST encoding issueJavaScript 到 PHP - POST 编码问题
【发布时间】: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,那么它仍然是带有特殊引号()的原始格式。

【问题讨论】:

  • &lt;meta http-equiv="Content-Type" content="text/html;charset=utf-8" /&gt; 而不是你的元标记?
  • 这只是正确的输出,UTF-8 字符应该像 JSON 中的 \uXXXX 一样编码。 @Jon:那是一样的,只是在 HTML 5 语法中。顺便说一句,不要清理您的 POST 数据,在输出/使用数据时使用正确的转义/编码。
  • 没有指定,所以我假设 XHTML 或 HTML 4.x ^^ 但是@MarcelKorpel 是正确的,在json_encode 之后返回正确。
  • 您的数据库问题似乎更像是编码问题。你使用 UTF-8 作为排序规则吗?

标签: php javascript post encoding utf-8


【解决方案1】:

你试过了吗:

utf8_decode()

在服务器端你传递的变量? PHP 可能期望 iso-8859-1 而不是 uft-8

【讨论】:

  • 这似乎将值更改为? 个字符。
  • 很好奇,刚刚发现 this question 也是如此。
【解决方案2】:

原来池塘两边都有问题。这个问题涉及的 PHP 方面的问题是数据通过 GET 请求(url 编码)发送到后端。我已将其更改为 POST 请求。

这允许我在发送 POST 请求的标头时指定 UTF-8 字符集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2012-02-15
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多