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

标签 java jakarta-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 个表。

最佳答案

我认为 Tomcat 是您的问题,您的 HTTP 连接器中的 URI 编码可能默认为 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")
ì§ìììì¸ë¯¸ë

关于java - 字符编码过滤器,韩文字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14009904/

相关文章:

javascript - 单击单选按钮时,我想用 Ajax 调用 Spring MVC 的 Controller

java - 您更喜欢哪个 Java Web 服务框架?

java - 无需 promise 供应商锁定的 GAME 框架

java - 刷新应用程序上下文时的 Spring 生命周期

java - 在 Eclipse 中运行 spring MVC 应用程序时出现 HTTP-404 错误 - Tutorials point hello world example

java - Autowiring 和对象创建有什么区别?

Java RMI 服务器不打印输出

java - 在 JApplet/Swing 中使用图形和小部件绘图?

java - Java 中的可序列化、可克隆和内存使用

java - 如何使用java将excel上传到数据库?