1

我有一个 PHP 脚本 (CMS),它生成 ISO-8859-1 内容(在后台还有一个包含 Latin1 数据的数据库)。为了可视化移动设备上的数据,我使用 jQuery Mobile 1.3.1。一般来说,如果您在 HTML 中使用正确的元标记,则字符编码没有问题:

<meta charset="iso-8859-1" />

然而 jQuery Mobile 有这个默认设置:

$.mobile.ajaxEnabled = true;

因此,jQuery Mobile 将尽可能通过 Ajax 自动处理链接点击和表单提交。

这是一个非常聪明的功能,但它会破坏一些特殊字符,例如德语变音符号,您会得到这些讨厌的字符:�</p>

4

1 回答 1

8

问题是 jQuery Mobile 1.3.1 在 ajax 请求上使用默认 UTF-8。有不同的解决方案来解决这个问题:

  1. 为特定链接禁用 Ajax,这些链接重定向到带有特殊字符的内容:

    data-ajax="false"
    
  2. 完全关闭ajax预加载功能:

    $.mobile.ajaxEnabled = false;
    
  3. 遵循此建议并手动设置正确的内容类型并覆盖 mime 类型:

    $.ajaxSetup({
      contentType: 'application/x-www-form-urlencoded; charset=ISO-8859-1',
      beforeSend: function(jqXHR) {
        jqXHR.overrideMimeType('application/x-www-form-urlencoded; charset=ISO-8859-1');
      }
    });
    

最后一个解决方案确实对我有用。

于 2013-05-02T14:11:34.333 回答