【发布时间】:2012-01-07 07:51:21
【问题描述】:
如何更改$.post() 使用的默认编码?
参数使用 UTF-8 编码。如何使用 ISO 8859-1 对其进行编码?
【问题讨论】:
标签: ajax jquery character-encoding special-characters
如何更改$.post() 使用的默认编码?
参数使用 UTF-8 编码。如何使用 ISO 8859-1 对其进行编码?
【问题讨论】:
标签: ajax jquery character-encoding special-characters
你可以使用:
内容类型:“应用程序/x-javascript;字符集:ISO-8859-1”【讨论】:
beforeSend:stackoverflow.com/a/14397845/92756
通过在 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'); ?>
希望对你有帮助。
【讨论】:
似乎无法再更改字符集 – $.ajax docs 声明:
W3C XMLHttpRequest 规范规定字符集是 始终为 UTF-8;指定另一个字符集不会强制浏览器 更改编码。
【讨论】:
请参阅 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(...
【讨论】: