0

我有一个 Tomcat 6.0 应用程序服务器,它有一个非常简单的使用 oracle 连接的 Web 应用程序。连接本身在 server.xml 文件中定义为 JDBCRealm。

服务器的默认编码是 latin1。数据库编码为 UTF-8。通常一切正常,特殊字符按应有的方式插入数据库中,并以正确的编码检索。如果我没记错的话,这是因为 Oracle 驱动程序会自动解决任何编码不匹配的问题。

我在启动 AS 的 catalina.bat 文件中添加了以下位,以设置用于 Catalina 的编码:

-Dfile.encoding=UTF-8

现在我仍然可以保存特殊字符ŰÁÉÚŐÖÜÓ如 类似的东西:ĂĂĂĂĂĂĂĂ

所以我仍然可以插入,但是在添加该行后我无法以正确的格式获取数据。有谁知道如何解决这个问题?或者什么可能导致它?我需要此设置,因为我实际上是在尝试在另一个环境中重新创建错误。

4

1 回答 1

0

嗯,我有点弄清楚问题出在哪里了。我责怪 oracle 驱动程序没有正确进行转换。然而,servlet 一开始就以错误的格式传输值,并以更糟糕的方式显示它们。因此,实际的简单解决方案是使用引用常用编码过滤器的通用过滤器来扩展 was xml,该过滤器也存在于 tomcat 文件夹的 eaxmple webapps 中。我将此添加到 web.xml:

<filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

一切都好起来了!从现在开始,这几乎是我添加到 web.xml 中的第一件事。无论如何,非常感谢,干杯!

于 2013-04-11T15:09:23.197 回答