嗨,我试图使其中一个应用程序,我正在工作的UTF-8兼容。我的env如下: linux os,apahce web服务器作为http侦听器,tomcat作为servlet引擎。
使用mod_jk和tomcat配置的apache使用ajp连接器。
我从几个网站上阅读了UTF-8的基本指南,并根据我的建议尝试了以下几点
在URIEncoding="UTF-8"中为连接器设置useBodyEncodingForURI =true和server.xml
使用LANG =en_US.UTF8在bashrc/..profile中设置语言
将apache服务器配置为默认使用utf-8编码,即将utf-8指定为
AddDefaultCharset utf-8在启动tomcat时,将utf-8设置为java args。使用
JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"我还验证了我的网页具有正确的元标记,配置为
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">尽管如此,我还是很难读懂UTF-8字。知道我哪里出问题了吗?
一个有趣的观察是,我面临的困难只有互联网发现者和合唱团。当我用火狐发送utf-8字符到我的服务器时,我能够正确地读取它们。然而,在IE和合唱团中,这些角色都被破坏了。知道问题可能在哪里吗?
唯一的改变,我不能之间的铬和火狐是在contentType头。
来自firefox的请求的请求头如下
Content-Type: application/x-www-form-urlencoded; charset=utf-8 至于铬(还有可能的IE,我没有检查)在哪里?
Content-Type: application/x-www-form-urlencoded 知道这里出了什么问题吗?
发布于 2013-11-01 09:26:38
最终解决了这个问题。下面的链接和底部报告的bug列表对于了解正在发生的马戏团非常有用:
http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
基本上,我的一个过滤器试图读取请求参数,而另一个则需要执行请求。setCharacterEncoding(desiredEncoding)在读取查询参数之前。
因此,我尝试添加设置char enconding的SetCharacterEncodingFilter,显然这也不起作用,因为这个过滤器在tomcat 7中可用(虽然不确定),而且我使用的是tomcat6.0.x。
因此必须编写我自己的过滤器来正确地设置charEncoding。
有了这个,现在我就可以把所有那些管理好的角色从我的脑海中清除了。他们从最晚起就打扰我太多了..
https://stackoverflow.com/questions/19714201
复制相似问题