如何更改$.post()
使用的默认编码?
参数使用UTF-8编码。如何使用ISO 8859-1对其进行编码?
答案 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(...