如何通过jQueryMobile 1.3.1中的AJAX加载带有正确字符编码的ISO-8859-1内容?

时间:2013-05-02 14:11:34

标签: jquery jquery-mobile encoding

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

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

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

$.mobile.ajaxEnabled = true;

因此,如果可能,jQuery Mobile将自动处理链接点击并通过Ajax形成提交。

这是一个非常聪明的功能,但它会摧毁一些像德国变形金刚这样的特殊角色,你会得到这些令人讨厌的角色:

1 个答案:

答案 0 :(得分:8)

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

  1. 禁用特定链接的Ajax,这些链接会重定向到包含特殊字符的内容:

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

    $.mobile.ajaxEnabled = false;
    
  3. 关注此recommendation并手动设置正确的内容类型并覆盖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');
      }
    });
    
  4. 最后一个解决方案对我有用。