我正在构建一个Web服务,并拥有一个接受POST来创建新资源的节点。该资源需要两种内容类型之一-我将要定义的XML格式或表单编码的变量。
这个想法是使用的应用程序可以直接发布XML并从更好的验证等中受益,但是还有一个HTML接口可以发布表单编码的内容。显然,XML格式具有字符集声明,但是仅通过查看POST就看不到如何检测表单的字符集。
来自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定义的,它只列出了%编码规则,但没有说明数据应包含的字符集。
基本上,如果我不知道最初显示的HTML字符集是什么,有什么方法可以告诉字符集?否则,我将不得不尝试根据存在的字符来猜测字符集,而我所能告诉的总是有些昧。
米琪卡哇伊
慕慕森