【问题标题】:Jquery ignores encoding ISO-8859-1Jquery 忽略编码 ISO-8859-1
【发布时间】:2012-02-17 19:15:30
【问题描述】:

我有一个网站,它明显地从字符串中删除了正确的编码 (ISO-8859-1) 并将其发送错误。

我在我的 HTML 中指定了这种编码

<meta charset="ISO-8859-1">

我通过

加载我的javascript
<script type="text/javascript" charset="ISO-8859-1" src="...

我通过这样的 JQuery Ajax 请求发送信息(带有德语特殊字符 'ö' 和 'ä'):

$.ajax({
    url: '..',
    type: 'POST',
    contentType: 'application/xml;charset=ISO-8859-1',
    data: xmlRequest.html(),...

这被翻译成一个请求,在 chrome 开发者工具中,我在请求标头中看到了这个:

..
Content-Type: application/xml;charset=UTF-8
..

那里发生了什么?

当然,特殊字符编码错误(“ö”而不是“ö”)服务器无法理解我,我得到一个错误。

【问题讨论】:

  • 你必须设置你的网络服务器头。你不能用javascript来做。这是一个服务器端功能。

标签: javascript jquery character-encoding content-type iso-8859-1


【解决方案1】:

根据jQuery.ajax() contentType documentation

数据将始终使用 UTF-8 字符集传输到服务器;您必须在服务器端对此进行适当解码。”

【讨论】:

  • 这是一个 Jquery-Thing 还是一般的 Ajax?
  • 根据同一文档页面,“根据 W3C XMLHTTPRequest 标准,POST 数据将始终使用 UTF-8 字符集传输到服务器。”
【解决方案2】:

因为我遇到了同样的问题,所以我将提供一个对我有用的解决方案。背景:Microsoft Excel 太笨了,无法以字符集 UTF-8 导出 CSV 文件:

$.ajax({
    url: '...',
    contentType: 'Content-type: text/plain; charset=iso-8859-1',
    // This is the imporant part!!!
    beforeSend: function(jqXHR) {
        jqXHR.overrideMimeType('text/html;charset=iso-8859-1');
    }
});

【讨论】:

  • 感谢您发布此信息!
  • 如果没有 jquery,你如何做到这一点,直接使用 XMLHttpRequest()
  • 这实际上也发送请求吗?添加后我的不会“发布”:(
  • 是的,应该。你确定你的代码被执行了吗?
  • 它不适合我。我想通过 POST 将一些数据发送到另一个页面,但似乎没有发送 POST 变量
猜你喜欢
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多