【问题标题】:Chinese characters cannot be shown after saving and retrieving from Oracle Database从Oracle数据库保存和检索后无法显示汉字
【发布时间】:2010-08-18 12:31:21
【问题描述】:

到目前为止,我仍然没有运气解决这个汉字问题。我将 OC4J 9.0.4.1 与 Oracle 10g 数据库(使用 UTF-8 创建)一起使用。情况是我的 JSP 页面已经设置了 pageencoding = UTF-8。

我通过 Thin Driver 将网页中的一些汉字保存到数据库(varchar2 列)。在 iSQLPlus 中,这些汉字无法显示。然后使用 ResultSet.getString 检索内容。当内容放回 JSP 页面时,它会显示怪物字符。

有人可以帮忙吗?

设置的背景信息: NLS_LANGUAGE 美国
NLS_TERRITORY 美国
NLS_CHARACTERSET AL32UTF8
NLS_LENGTH_SEMANTICS 字节
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
System.getProperty("file_encoding") = MS950

有人可以帮忙吗?

【问题讨论】:

    标签: jsp jdbc oracle10g


    【解决方案1】:

    我通过 Thin Driver 将网页中的一些汉字保存到数据库(varchar2 列)。在 iSQLPlus 中,这些汉字无法显示

    在获取参数之前,需要将请求体编码设置为与JSP的pageEncoding相同的编码。

    request.setCharacterEncoding("UTF-8");
    

    请注意,以上内容仅适用于 POST 请求(我希望您在这里使用 POST),对于 GET 请求参数,您需要在 servletcontainer 级别进行配置。

    另见:

    【讨论】:

    • 但是……它们是 JSP 页面,通过瘦驱动程序直接从 Oracle 数据库获取字符串并显示在浏览器上。这些参数不是来自请求。
    • 您告诉过您将网页中的一些字符保存到数据库中,并且它们无法在 iSQLPlus 中显示。所以在保存过程中出了点问题。
    • 是的,我需要在保存过程中做一些特别的事情吗?我使用: sqlStr = "UPDATE blah blah blah" stmt = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); intResult = stmt.executeUpdate(sqlStr);
    • 没有。您需要确保提交的数据在任何地方都被处理为 UTF-8。查看我的答案,如有必要,还可以查看其中的链接。
    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2021-05-07
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多