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

Posted

技术标签:

【中文标题】如何使用正确的字符编码在 jQueryMobile 1.3.1 中通过 AJAX 加载 ISO-8859-1 内容?【英文标题】:How to load ISO-8859-1 content via AJAX in jQueryMobile 1.3.1 with correct character encoding? 【发布时间】:2013-04-26 18:16:02 【问题描述】:

我有一个生成 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】:

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

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

    data-ajax="false"
    

    完全关闭ajax预加载功能:

    $.mobile.ajaxEnabled = false;
    

    关注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');
      
    );
    

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

【讨论】:

一个旧线程,但它拯救了我的一天!处理这个问题两天,我找到的答案被某人否决了!如果可以的话,我会投票两次!谢谢你!!!

以上是关于如何使用正确的字符编码在 jQueryMobile 1.3.1 中通过 AJAX 加载 ISO-8859-1 内容?的主要内容,如果未能解决你的问题,请参考以下文章

C# 如何将byte[]用正确字符编码转为字符串?

Notepad++开发PHP如何设置正确的UTF-8编码

如何在 jqueryMobile 中正确创建类似于 iOS tabbarController 的 tabbar 控制器?

如何使用 BeautifulSoup 将 UTF-8 编码的 HTML 正确解析为 Unicode 字符串? [复制]

如何知道std :: string是否正确编码?

我如何使用正确的字符串字符集编码将字符串从 dao 发送到 jsp 并显示它?