如何更改ajax-charset?

时间:2011-11-27 13:35:33

标签: ajax jquery character-encoding special-characters

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

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

4 个答案:

答案 0 :(得分:9)

您可以使用:

contentType:"application/x-javascript; charset:ISO-8859-1"

答案 1 :(得分:6)

通过在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
});

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

Ex:for php

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

我希望这对你有所帮助。

答案 2 :(得分:2)

似乎字符集不能再被更改了 - $.ajax docs声明:

  

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

答案 3 :(得分:0)

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

  

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

     

将contentTypeRecord的参数[“字符集”]设置为“ UTF-8”。

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

但是,您可以使用fetch API。由于它不是XHR,因此使用fetch进行发布会遵循您的编码要求。

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