有人知道如何强制当前浏览器将字符集附加到Content-Type标头吗?
不,没有浏览器提供过
charset带有
application/x-www-form-urlenpred媒体类型的参数。而且,定义该类型的HTML规范没有提出
charset参数,因此服务器无法合理地期望得到一个参数。
(HTML4 确实 希望提交
charset的子部分为a
multipart/form-data,但即使在这种情况下,也没有浏览器实际遵守。)
accept-charset =“ utf-8”
accept-charset在IE中已损坏,因此不应使用。对于用作UTF-8的页面中的表单,这两种方法都没有任何区别,但是在其他情况下,最终结果可能会不一致。
不,对于表格,您只需要以UTF-8的形式提供它们所在的页面,然后结果应以UTF-8的形式返回(没有识别标记可以告诉您(除了可能的
_charset_hack,但Tomcat不会)不支持这一点)。
因此,如果您不希望它退回到默认值(通常是错误的),则必须告诉Servlet容器对参数使用哪种编码。在少数情况下,您可能可以调用
ServletRequest.setCharacterEncoding()此方法,但这往往很脆弱,并且对于从查询字符串获取的参数完全不起作用。遗憾的是,这没有标准化的Servlet级别的修复程序。对于Tomcat,通常必须搞混server.xml,而不是能够在应用程序中对其进行修复。



