2013-03-26 82 views
1

我们正在使用多种语言,而韩语是其中之一,在我们的应用程序中,我们已经在tomcat级别设置了编码,并且还为编码设置了弹簧过滤器,但由于某些原因,在我们只收到的Struts2操作类中有一个request.getParameter ??。URIEncoding不能在Tomcat 6.0.26上工作

Tomcat的编码

<Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" maxThreads="150" 
      redirectPort="8443" URIEncoding="UTF-8"/> 

弹簧过滤器

<filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

EDIT

所以被接收作为其被称为 “안녕하세요KKK” 发送的消息“???? ?kkk“

我可能会错过什么?

问候,

AYUSH

回答

0

你如何把你的信息呢?如果它的URL的一部分,那么你就必须发送类似

param=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94+kkk 

编码的URL在服务器端得到안녕하세요 kkk。有关URL编码/解码的更多信息,请参阅http://www.url-encode-decode.com/

如果将HTML表单中的数据发布到服务器上,而不是确保将页面作为UTF-8提供。您可以检查这是否响应标头

Content-Type text/html;charset=UTF-8 

存在于您的页面。

Spring的编码过滤器应该这样做。只要确保你声明了一个过滤器映射。否则,过滤器将不会被servlet引擎使用:

<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

我知道这是奇数,但是我删除的URIEncoding =“UTF-8”从我的Tomcat和人物似乎会好起来的。无法理解这将如何发生。 – 2013-04-16 16:04:51

+0

我们将它作为POST发送..移除URIEncoding将导致所有GET无法编码 – 2013-04-16 16:09:50

+0

您是否尝试添加过滤器映射? – 2013-04-16 18:58:49

1

如果你的标签在属性文件中,试图迫使UTF8文件编码(检查tomcat的启动脚本):

  1. 在Windows
    组JAVA_OPTS =%JAVA_OPTS%-Dfile.encoding = UTF8

  2. 在Linux
    出口JAVA_OPTS =“$ JAVA_OPTS -Dfile.encoding = UTF8

我希望这能帮助:)

1

我们只是有一个问题simliar与被误解GET请求。

原因是在同一时间冲突使用URIEncodinguseBodyEncodingForURI

显然Tomcat(6)使用全局默认值(latin1?),而不是在URIEncoding定义的编码处理GET请求时(这对于明显的原因没有编码)如果useBodyEncodingForURI="true"