2013-10-31 31 views
0

嗨,我试图使我的工作在UTF-8兼容的应用程序之一。 我的环境如下:linux os,apahce web服务器作为http listener,tomcat作为servlet引擎UTF-8的问题,尽管URIEncoding =“UTF-8”

Apache配置了mod_jk和tomcat使用ajp连接器。

我已经阅读从几个网站UTF-8的基本方针,并根据建议我曾尝试以下

设置URIEncoding="UTF-8"useBodyEncodingForURI =true的连接器在server.xml中

设置在.bashrc中的语言在/.profile使用LANG =en_US.UTF8

配置Apache服务器使用UTF-8编码默认 即指定UTF-8作为默认炭在

设置

在启动tomcat时将utf-8设置为java args。使用

JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8" 

我也验证了我的网页有配置的Inspite这一切我有阅读困难的UTF-8字符

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

适当的meta标签。任何想法我哪里错了?

一个有趣的观察是我只面对互联网exporer和chorme困难。 当我使用firefox将utf-8字符发送到我的服务器时,我能够正确读取它们。然而,这些角色因为IE和chorme而变得越来越严重。任何想法的问题可能是?

唯一的变化,我不能在铬和火狐之间的感染是在contentType头。

从Firefox的请求,请求头如下

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

其中作为铬(和可能的IE浏览器为好,这我没有检查)是

Content-Type: application/x-www-form-urlencoded 

任何想法怎么回事这里错了吗?

回答

1

Allrite,终于明白了这个问题。 在底部报告的错误的链接如下和列表是非常有用的,了解其周围发生的马戏团:

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

基本上我的过滤器的一个试图读取请求参数,以及一个需要要做 请求。在读取查询参数之前设置字符编码(desiredEncoding)。

所以,我试图添加SetCharacterEncodingFilter设置char enconding,显然这也没有工作,因为这个过滤器是可用的tomcat 7(不知道虽然)以上,我在tomcat6.0.x。

所以不得不写我自己的过滤器,正确设置charEncoding。

因此,现在我能够让所有那些托管人物脱离我的脑海。他们一直在打扰我太多,从夜晚..

+1

请记住URIEncoding =“UTF-8”在连接器似乎只处理GET请求不是帖子.. –