【问题标题】:How to fix jquery ajax response with � (quotation mark block)如何使用 �(引号块)修复 jquery ajax 响应
【发布时间】:2014-07-19 14:17:27
【问题描述】:

当我尝试从 ajax 请求中获取 html 时,我得到了多个 �.为什么会这样以及如何纠正?

    $.ajax
    ({
        type: 'POST',
        url: Generic.ajaxSluice,
        dataType: "html",
        data:
        {
            param: paramArr
        },
        success:function(response)
        {
            console.log(response);
        }
    });

这段代码在控制台中给了我这个响应:

[[“��������������������������...������������������ ����0", "../upload/images/Untitled-2.png"], ["1", "../upload/images/j.png"], ["2", ". ./upload/images/peppe.png"], ["�������������������������������������� ����"]]

【问题讨论】:

  • 您似乎遇到了编码问题。您可以尝试在您的页面和 AJAX 源响应中使用 UTF-8
  • 是的,我认为这可能是编码问题。我本可以提到我实际上已经尝试转换为 UTF-16 并返回 UTF-8 以确保它是 UTF-8。但这并没有真正帮助。还能是别的吗?
  • 转UTF-16 从什么开始?你能发布你的服务器端代码吗?
  • 这还没有解决:s 感谢您的尝试

标签: javascript ajax encoding utf-8 utf


【解决方案1】:

AJAX 需要 UTF-8。它甚至不是可选的。来自jQuery.ajax() 手册页:

W3C XMLHttpRequest 规范规定字符集是 始终为 UTF-8;指定另一个字符集不会强制浏览器 改变编码

因此,您的服务器端代码需要读写 UTF-8。期间。


验证您的服务器是否生成 UTF-8 的一种方法是输入一个已知字符(我经常使用 符号)并查看您是否获得了预期的字节 (E2 82 AC)。要获得十六进制转储:

如果您碰巧看到很多零,您会以某种方式得到null characters。这是一个不可打印的控制代码,应该只出现在二进制文件上(从不出现在文本上)。这揭示了一个不同的问题。

【讨论】:

  • contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8') UTF-8 是默认值,我没有在我的请求中指定它。 php有问题吗,如果有,我如何在php中更改它?
  • 您可以通过这种技术使用任何编码:stackoverflow.com/questions/553463/…
  • @KristofferFrisellJarnevid 这里重要的是您的 服务器 实际使用的编码。
  • @KristofferFrisellJarnevid 声明你的编码是一回事。实际上使用它是另一回事。 PHP 有bin2hex()。只需输入一个已知的字符(例如),看看你是否得到了预期的字节(e282ac)。
  • @blex 根据 jQuery 文档,在最好的情况下,这只适用于某些浏览器。
猜你喜欢
  • 2021-09-24
  • 1970-01-01
  • 2015-06-10
  • 2017-11-08
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2011-07-04
相关资源
最近更新 更多