我们正在使用多种语言,韩语就是其中之一,在我们的应用程序中,我们已经设置了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
答案 0 :(得分:1)
如果您的标签位于属性文件中,请尝试强制使用utf8文件编码(检查tomcat启动脚本):
在Windows上 设置JAVA_OPTS =%JAVA_OPTS%-Dfile.encoding = UTF8
在Linux上 导出JAVA_OPTS =“$ JAVA_OPTS -Dfile.encoding = UTF8
我希望这有助于:)
答案 1 :(得分:1)
我们只是因为GET请求被误解而出现了类似问题。
原因是同时使用URIEncoding
和useBodyEncodingForURI
时存在冲突。
显然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>