【问题标题】:JQuery AJAX is not sending UTF-8 to my server, only in IEJQuery AJAX 没有将 UTF-8 发送到我的服务器,仅在 IE 中
【发布时间】:2011-01-29 05:18:39
【问题描述】:

标签: javascript jquery ajax utf-8 internet-explorer-8


【解决方案1】:

尝试使用encodeURIComponent()对查询参数进行编码

data:"q="+encodeURIComponent( query )

正如 bobince 在他的评论中非常正确地指出的那样,如果您使用对象表示法将参数传递给 ajax 方法,它将自己处理编码..

所以

data:{ q : query }

将使 jQuery 处理编码..

【讨论】:

  • +1 这是我的第一个想法,但我认为 jQuery 处理了编码。现在,如果数据已经设置为查询字符串,jQuery 不会处理编码实际上是有道理的。呵呵!
  • @Andy,一开始我也有同样的想法,但后来注意到了实际的代码.. :)
  • 是的,这是将{q: query} 之类的映射传递给ajax() 并让jQuery 为您担心编码的好理由。
  • @bobince,+1,非常正确,我会将其添加到答案中以供将来参考。
  • 奇怪的是只有 encodeURIComponent(query) 对俄语有效
【解决方案2】:

我知道这是一篇旧帖子,但我最近遇到了这个问题,我想贡献一下以防其他人遇到同样的问题。 我正在使用 PHP,但我确信每种服务器端语言都有一个选项。这只是几件事:

  1. 通过添加 header('Content-Type: text/html; charset=utf-8'); 确保在 ajax 响应中发送正确的标头这必须是你的第一行。如果您有任何错误表明标头已被发送或类似的情况是因为您的代码中某处在发送标头之前输出了额外的空间或其他内容,请检查您的代码。

  2. 在服务器中构建响应时,请确保使用 echo htmlentities($your-string, null, 'utf-8); 将所有字符转换为对应的 HTML 字符;因为即使在告诉 IE 您正在发送 utf-8 数据之后,IE 似乎也忘记了这一点,或者它不会简单地假设任何内容,因此将其添加到您的代码中将确保正确的输出。

感谢大家的帮助。

【讨论】:

    【解决方案3】:

    我们阅读了这篇文章,希望它能解决我遇到的与 utf8 转换有关的问题。

    在我的情况下,事实证明服务器引擎(node.js)计算数据的内容长度,数据被认为是原始数据而不是 utf8,因此 uft8 中的两个字符扩展字符被计算为好像它们在哪里一个字符导致服务器发送一个字符太少。

    在这里查看我为解决它所做的工作:Not well formed Json when sending to CouchDB

    【讨论】:

      【解决方案4】:

      在 JavaScript 中使用 encodeURIComponent()。这是示例:

      function doPost()
      {
          var URL = "http://localhost/check.php?yab=" + encodeURIComponent(document.getElementById("formSearch").childNodes[1].value);
          xmlHttp.open("GET", URL);
          xmlHttp.send();
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 2020-07-31
        • 2011-03-14
        • 2019-07-09
        • 2013-10-31
        • 1970-01-01
        相关资源
        最近更新 更多