URIEncoding不适用于Tomcat 6.0.26

时间:2013-03-26 08:26:33

标签: tomcat6 url-encoding

我们正在使用多种语言,韩语就是其中之一,在我们的应用程序中,我们已经设置了tomcat级别的编码以及用于编码的spring过滤器,但出于某种原因,当我们在Struts2动作中执行request.getParameter时我们收到的课程只有??。

Tomcat编码

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

Spring Filter

<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>

修改

所以收到的信息是“안녕하세요kkk”收到“????? kkk”

我能错过什么?

此致

Ayush

3 个答案:

答案 0 :(得分:1)

如果您的标签位于属性文件中,请尝试强制使用utf8文件编码(检查tomcat启动脚本):

  1. 在Windows上 设置JAVA_OPTS =%JAVA_OPTS%-Dfile.encoding = UTF8

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

  3. 我希望这有助于:)

答案 1 :(得分:1)

我们只是因为GET请求被误解而出现了类似问题。

原因是同时使用URIEncodinguseBodyEncodingForURI时存在冲突。

显然Tomcat(6)使用全局默认值(latin1?)而不是URIEncoding中处理GET请求时定义的编码(由于显而易见的原因没有编码){{1} }

答案 2 :(得分:0)

你如何发送信息?如果它是URL的一部分,那么您必须发送编码的URL,如

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

在服务器端获取안녕하세요 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>