当前位置:  开发笔记 > 前端 > 正文

检测HTTP POST请求的字符编码

如何解决《检测HTTPPOST请求的字符编码》经验,为你挑选了2个好方法。

我正在构建一个Web服务,并且有一个接受POST的节点来创建新资源.资源需要两种内容类型之一 - 我将定义的XML格式或表单编码变量.

这个想法是消费应用程序可以直接POST XML并从更好的验证等方面受益,但是还有一个HTML接口将POST表单编码的东西.显然XML格式有一个charset声明,但我看不到如何通过查看POST来检测表单的charset.

Firefox中表单的典型帖子如下所示:

POST /path HTTP/1.1
Host: www.myhostname.com
User-Agent: Mozilla/5.0 [...etc...]
Accept: text/html,application/xhtml+xml, [...etc...]
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 41

field1=value1&field2=value2&field3=value3

这似乎不包含任何有用的字符集指示.

从我所看到的,application/x-www-form-urlencoded类型完全在HTML中定义,它只是列出了%-encoding规则,但没有说明数据应该在什么字符集中.

基本上,如果我不知道HTML最初呈现的字符集,有没有办法告诉字符集?否则,我将不得不尝试根据字符存在来猜测字符集,而且总是有点不确定.



1> chburd..:

HTTP POST的默认编码是ISO-8859-1.

否则你必须看看那样的Content-Type标题

Content-Type: application/x-www-form-urlencoded ; charset=UTF-8

你也许可以申报表格

要么


强制编码.

一些参考:

http://www.htmlhelp.com/reference/html40/forms/form.html

http://www.w3schools.com/tags/tag_form.asp



2> AnthonyWJone..:

POST中使用的Charset将匹配托管表单的HTML中指定的Charset.因此,如果您的表单是使用UTF-8编码发送的,该编码是用于发布内容的编码.在将值转换为字符编码的八位字节集之后应用URL编码.


@CiaranMcNulty实际上不是真的,有些浏览器不这样做.我在FF上尝试了这个,强制页面字符集为iso-8859-1,它仍然以UTF-8提交表单
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有