Javascript 当post通过XMLHTTPRequest时,无法设置自定义编码

Javascript 当post通过XMLHTTPRequest时,无法设置自定义编码,javascript,ajax,encoding,utf-8,xmlhttprequest,Javascript,Ajax,Encoding,Utf 8,Xmlhttprequest,从最新版本的chrome浏览器的JS控制台: x = new XMLHttpRequest(); x.open('POST', '?a=2'); x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset="ISO-8859-1"'); x.send({b:2}); 发送请求时使用了错误的编码,在网络检查器中,我看到: Content-Type:applic

从最新版本的chrome浏览器的JS控制台:

x = new XMLHttpRequest();
x.open('POST', '?a=2');
x.setRequestHeader('Content-Type', 
                   'application/x-www-form-urlencoded; charset="ISO-8859-1"');
x.send({b:2});
发送请求时使用了错误的编码,在网络检查器中,我看到:

Content-Type:application/x-www-form-urlencoded; charset="UTF-8"
另一个非常奇怪的行为,当我提供
charset=ISO-8859-1
而不是
charset=“ISO-8859-1”
时,我得到:

Content-Type:application/x-www-form-urlencoded; charset=UTF-8
因为在两者之间有些东西发生了变化


编辑2013/12/11

嗯,对我来说真正有问题的一点是,如果您不发送(数据),编码更改将按预期工作。以我前面的示例为例(注意最后一行的更改):

然后网络正确输出:

Content-Type:application/x-www-form-urlencoded; charset="ISO-8859-1"
奇怪…

说明字符集始终为UTF-8,指定另一个字符集不会强制浏览器更改编码


请注意,for jQuery的$.ajax方法在设置内容类型时说明了完全相同的内容

请参见OP问题中的解决方法:我没有从规范中阅读此内容。如果您参考了页面上的几个示例,它们会明确地描述字符集:
client.setRequestHeader(“Content-Type”,“text/plain;charset=UTF-8”)
Content-Type:application/x-www-form-urlencoded; charset="ISO-8859-1"