如何更改 ajax 字符集?
Posted
技术标签:
【中文标题】如何更改 ajax 字符集?【英文标题】:How to change ajax-charset? 【发布时间】:2012-01-07 07:51:21 【问题描述】:如何更改$.post()
使用的默认编码?
参数使用 UTF-8 编码。如何使用 ISO 8859-1 对其进行编码?
【问题讨论】:
【参考方案1】:你可以使用:
内容类型:“应用程序/x-javascript;字符集:ISO-8859-1”【讨论】:
您可能还需要添加beforeSend
:***.com/a/14397845/92756【参考方案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(...
【讨论】:
以上是关于如何更改 ajax 字符集?的主要内容,如果未能解决你的问题,请参考以下文章