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

标签 jquery jquery-mobile encoding

我有一个 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 自动处理链接点击和表单提交。

这是一个非常聪明的功能,但它破坏了一些特殊字符,例如德语变音符号,你会得到这个令人讨厌的字符:�

最佳答案

问题是 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');
      }
    });
    

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

关于jquery - 如何在 jQueryMobile 1.3.1 中通过 AJAX 使用正确的字符编码加载 ISO-8859-1 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16340344/

相关文章:

javascript - 在 Android 浏览器中使用 JQuery Mobile 添加点击事件处理程序时出现问题

r - 如何在 R 中设置 unicode 语言环境?

c# - MVC 中的 JQuery AJAX 文件上传

javascript - json 调用受 Access-Control-Allow-Origin 阻碍

JavaScript - 在 ( ) 之间分割字符串组并将它们放入两个单独的输入中

javascript - 在javascript中设置单选按钮值

javascript - JQuery 移动版。无法以编程方式打开对话框;尝试了我能想到的一切

video - 在保持质量足够好的同时为网络视频编码参数(小尺寸)?

html - 将Unicode转换为UTF8或Ascii解码

javascript - 在 Chrome 中对无序列表的列表项进行排序