使用ResetSet.getString无法正确获取中文字符

时间:2010-08-11 10:29:59

标签: java oracle jsp jdbc character-encoding

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

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

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

仅供参考,每个JSP的页面指令已经是<%@ page contentType ='text / html; charset = utf-8'pageEncoding ='utf-8'%>

任何提示?

2 个答案:

答案 0 :(得分:0)

  

我试图在JSP页面上输入一些中文字符

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

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

    如果已使用Content-Type: text/html; charset=UTF-8标头到达回复,请使用HTTP响应标头检查工具(例如Firebug)进行验证。

  • 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也无法正确显示字符。

  • 如果您已采取上述所有步骤,则应立即解决此问题。

另见:

答案 1 :(得分:0)

确保JDBC连接上的defaultNChar设置为true。请参阅defaultNChar property