1

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

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>

编辑

因此,作为“안녕하세요 kkk”发送的消息被接收为“????? kkk”

我会错过什么?

问候,

阿尤什

4

3 回答 3

1

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

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

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

我希望这可以帮助:)

于 2013-03-29T11:42:15.903 回答
1

我们刚刚遇到了一个类似的问题,即 GET 请求被误解了。

原因是两者同时使用的URIEncoding冲突useBodyEncodingForURI

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

于 2013-11-13T15:49:53.823 回答
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>
于 2013-03-26T12:39:15.520 回答