字符编码过滤器,韩文字符编码问题

时间:2012-12-23 09:26:08

标签: java java-ee spring-mvc character-encoding

我们有一个基于Spring MVC的多语言Web应用程序。我们在web.xml中设置了CharacterEncodingFilter,如下所述

<filter>
        <filter-name>SetCharacterEncodingFilter</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>
    <filter-mapping>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

使用这些配置,应用程序正常运行。

当我们从jsp“직원의상세미니”传递这个韩国角色时,在我们的服务层中,我们发现这个角色被编码为“ì§ìì씸¸¸“”

我们有一个功能,即使用收到的所有者名称查询jdbc元数据,以获取其中可用的表格,如下所述

ResultSet resultSetTables = dbMetadata.getTables(owner,owner, "%", tableTypes);

1)此功能

ResultSet resultSetTables = dbMetadata.getTables("직원의상세미니","직원의상세미니", "%", tableTypes); 

返回架构“직원의상세미니”

下的7个表格

当使用编码字符串“ì§ìì츸ë¸ë”

运行时
ResultSet resultSetTables = dbMetadata.getTables("ì§ìììì¸ë¯¸ë","ì§ìììì¸ë¯¸ë", "%", tableTypes); 

返回0个相同模式下可用的表“직원의상세미니”。

1 个答案:

答案 0 :(得分:1)

我认为Tomcat是您的问题,您的URI编码可能默认为HTTP连接器中的ISO-8859-1。

http://tomcat.apache.org/tomcat-5.5-doc/config/http.html,您可能必须将URIEncoding设置为UTF-8并查看是否有帮助。

我在python控制台上快速尝试,如果我使用iso-8859-1提供的字符串,我会得到与你发布的相同的乱码。

>>> a = '직원의상세미니'
>>> print a.decode("iso-8859-1")
ì§ìììì¸ë¯¸ë