【问题标题】:How to change ajax-charset?如何更改 ajax 字符集?
【发布时间】:2012-01-07 07:51:21
【问题描述】:

如何更改$.post() 使用的默认编码?

参数使用 UTF-8 编码。如何使用 ISO 8859-1 对其进行编码?

【问题讨论】:

    标签: ajax jquery character-encoding special-characters


    【解决方案1】:

    你可以使用:

    内容类型:“应用程序/x-javascript;字符集:ISO-8859-1”

    【讨论】:

    【解决方案2】:

    通过在 ajax 调用期间显式指定内容类型,如下所示,您可以覆盖默认内容类型。

    $.ajax({
            data: parameters,
            type: "POST",
            url: ajax_url,
            timeout: 20000,
            contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
            dataType: 'json',
            success: callback
    });
    

    您还必须在服务器上指定字符集。

    例如:对于 php

    <?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
    

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      似乎无法再更改字符集 – $.ajax docs 声明:

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

      【讨论】:

        【解决方案4】:

        请参阅 XHR 规范的第 4.5.6.4.4.3 节: https://xhr.spec.whatwg.org/#the-send()-method

        如果 contentTypeRecord 不失败,contentTypeRecord 的 parameters["charset"] 存在,parameters["charset"] 不是 “UTF-8”的 ASCII 不区分大小写匹配,则:

        将 contentTypeRecord 的参数 ["charset"] 设置为 "UTF-8"。

        规范强制浏览器始终以 UTF-8 格式发送。

        不过,您可以使用fetch API。由于它不是 XHR,因此使用 fetch 发布将遵循您的编码。

        fetch(url, {
          method: 'POST',
          headers: {
            'Content-Type': `text/plain; charset=${yourCustomEncoding}`
          },
          body
        }).then(...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-01
          • 2020-05-18
          • 2012-04-12
          • 1970-01-01
          • 2012-02-12
          • 2011-12-10
          相关资源
          最近更新 更多