【问题标题】:Cannot get Chinese characters correctly with ResetSet.getString使用 ResetSet.getString 无法正确获取中文字符
【发布时间】:2011-03-28 07:25:48
【问题描述】:

我的项目需要我用 JSP 编写一个 Web 应用程序来与 Oracle 10g R2 进行通信

JSP/Javascript/HTML 保存在 OC4J 9i 中,并且使用 UTF-8 字符集创建数据库。 JSP与Oracle的接口基于JDBC Thin驱动

我尝试在JSP页面上输入一些汉字,然后保存到Oracle。在 Oracle (SQL Plus) 中,这些字符无法正确显示。然后使用 ResetSet.getString 也无法正确显示字符。

仅供参考,每个 JSP 的页面指令已经是

有什么提示吗?

【问题讨论】:

    标签: java oracle jsp jdbc character-encoding


    【解决方案1】:

    确保在 JDBC 连接上将 defaultNChar 设置为 true。见defaultNChar property

    【讨论】:

      【解决方案2】:

      我尝试在JSP页面上输入一些汉字

      • 那个JSP页面的页面编码必须设置为UTF-8。

          <%@ page pageEncoding="UTF-8" %>
        

        使用Firebug 等 HTTP 响应标头检查工具验证是否已使用Content-Type: text/html; charset=UTF-8 标头到达响应。

      • 正在对doPost() 中提交的数据进行后处理的 servlet 必须在访问参数之前将请求编码设置为 UTF-8

          request.setCharacterEncoding("UTF-8");
        

        如果它实际上是一个 GET 请求并且您在 doGet() 中收集参数,那么您需要配置相关的 servletcontainer 以使用 UTF-8 来解码查询字符串。这是一个针对 Tomcat 的示例:

          <Connector (...) URIEncoding="UTF-8" />
        

      然后保存到 Oracle。在 Oracle (SQL Plus) 中,这些字符无法正确显示。

      • 必须使用正确的字符集创建数据库:

          CREATE DATABASE dbname CHARACTER SET UTF8
        

      那么ResetSet.getString也无法正确显示字符。

      • 如果您已完成上述所有步骤,那么现在应该可以解决此问题。

      另见:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-04
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 2016-06-28
        • 2016-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多