您好我正在尝试制作一个我正在使用UTF-8兼容的应用程序。 我的env如下:linux os,apahce web server as http listener,tomcat as servlet engine
使用mod_jk配置的apache和tomcat使用ajp连接器。
我已经从少数网站阅读了UTF-8的基本指南,并根据我尝试过的建议
为server.xml中的连接器设置URIEncoding="UTF-8"
和useBodyEncodingForURI =true
使用LANG =en_US.UTF8
默认情况下,将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字符。知道我哪里错了吗?
一个有趣的观察结果是,我只面临着互联网出版商和chorme的困难。 当我使用fire fox将utf-8字符发送到我的服务器时,我能够正确读取它们。然而,IE和chorme的角色正在变得越来越糟糕。知道问题可能在哪里吗?
我在Chrome和Fire fox之间唯一的变化就是在contentType标题中。
来自firefox的请求的请求标头如下
Content-Type: application/x-www-form-urlencoded; charset=utf-8
对于chrome(以及可能的IE,我没有检查)是
Content-Type: application/x-www-form-urlencoded
有什么想法在这里出错吗?
答案 0 :(得分:1)
Allrite,终于弄明白了这个问题。 以下链接和底部报告的错误列表对于了解正在发生的马戏团非常有用:
http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
基本上我的一个过滤器试图读取请求参数,而需要做的就是 请求。 setCharacterEncoding(desiredEncoding)在读取查询参数之前。
所以,我尝试添加设置char enconding的SetCharacterEncodingFilter,显然这也没有用,因为这个过滤器在tomcat 7中可用(不确定)以及我在tomcat6.0.x上。
因此必须编写我自己的过滤器来正确设置charEncoding。
有了这个,现在我能够把所有这些管理角色从脑子里拿出来。从夜以来他们一直困扰我..