shaolin 前辈给出的建议确实靠谱。
附件 1 是使用 CGI 形式的 POST,从浏览器到 http 服务器的数据包。
可以看出浏览器给出的 content-type 没有特别指明文字编码。
Form 当中我只填了“中”字,可以看大 parameter 里面有两个字节的 encode,应该就是这个“中”字了。
附件 2 是使用 javascirpt 做的 POST。
这个 content-type 缺省给了个 text/plain; charset=utf-8
后面那个“中”字就变成 3 字节了。
然后,我修改了 js 文件,增加了这样一行:
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=gb2312");
再运行之后的数据包就是附件 3 了。
奇怪的是 content-type 确实改成 application/x-www-form-urlencoded 了,
但是 charset 居然替换成 utf-8 了。
想起 shaolin 文中所述:服务器端的编码优先级最高。
我发给 browser 的那个含有 js 文件的 html 里面确实是 gb2312 编码啊。
不过,我发现我那个 http server 缺省的生成文件夹目录 html 页的功能倒是以 utf-8 编码给出的目录。
有什么办法能强制告诉 browser, 用某个编码提取 form 里面的元素吗?
多谢,多谢!!
【 在 shaolin 的大作中提到: 】
: accept-charset
:
http://www.w3.org/TR/html4/interact/forms.html#h-17.13: 有所提及
: ...................
--
修改:ameng FROM 124.165.216.*
FROM 124.165.216.*