当前位置: 技术问答>java相关
JSP连ORACLE中文字符的显示问题!!!急死我了~~~
来源: 互联网 发布时间:2015-09-06
本文导语: 我用weblogic+oracle 8i 为什么显示数据库里的汉字 都是 0xE5BCA0E6B2BB 这种乱七八糟的东西呀 我在JSP里用@ page language="Java"contentType="text/html;charset=gb2312" 但数据库里的中文显示还是乱码,求高手解答!!谢谢!!! ...
我用weblogic+oracle 8i
为什么显示数据库里的汉字 都是 0xE5BCA0E6B2BB 这种乱七八糟的东西呀
我在JSP里用@ page language="Java"contentType="text/html;charset=gb2312"
但数据库里的中文显示还是乱码,求高手解答!!谢谢!!!
为什么显示数据库里的汉字 都是 0xE5BCA0E6B2BB 这种乱七八糟的东西呀
我在JSP里用@ page language="Java"contentType="text/html;charset=gb2312"
但数据库里的中文显示还是乱码,求高手解答!!谢谢!!!
|
呵呵,我也遇到了同样的问题了,痛苦中。。。。。
不过我到是找到问题所在地方了,但是没有解决方法。
楼主和我一样,造成此现象是因为用了
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
主要是用了java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY设置了光标,出现了中文问题,这种现象不是应该不是乱码问题,应该是字符集的问题,用new String(sDB.getBytes("gb2312"),"iso-8859-1")是解决不了问题的。
如果你用sqlStmt = sqlCon.createStatement();就不会有这种现象了。但这样就不能支持jdbc2.0了,光标不能定位了。
你可以用:
sqlStmt = sqlCon.createStatement();
//准备SQL语句
strSQL = "select * from zztest";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
if (sqlRst.next())
out.println(sqlRst.getString(1)+"--|--"+sqlRst.getString(2)) ;
试试看有没有出现上面的这种情况。
个人感觉是可能nls_charset12.jar版本太低了!我现在也没有办法。:(
不过我到是找到问题所在地方了,但是没有解决方法。
楼主和我一样,造成此现象是因为用了
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
主要是用了java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY设置了光标,出现了中文问题,这种现象不是应该不是乱码问题,应该是字符集的问题,用new String(sDB.getBytes("gb2312"),"iso-8859-1")是解决不了问题的。
如果你用sqlStmt = sqlCon.createStatement();就不会有这种现象了。但这样就不能支持jdbc2.0了,光标不能定位了。
你可以用:
sqlStmt = sqlCon.createStatement();
//准备SQL语句
strSQL = "select * from zztest";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
if (sqlRst.next())
out.println(sqlRst.getString(1)+"--|--"+sqlRst.getString(2)) ;
试试看有没有出现上面的这种情况。
个人感觉是可能nls_charset12.jar版本太低了!我现在也没有办法。:(
|
升级一下你的classes12.jar,还有在classpath中加上nls_charset12.jar
|
用prepareStatement试试。看看楼上的,你核实一下,是否和你的问题一样,我没有遇到这样的问题,我想数据库里面出现乱码可能和数据库字符基有关系,可能是你没有选择多语言支持。
还有就是prepareStatement在sun的规范里面好象说了,在一定程度上可能解决乱码,并且是欲编译的,所以,最好用这个不要用createStatement。
还有就是prepareStatement在sun的规范里面好象说了,在一定程度上可能解决乱码,并且是欲编译的,所以,最好用这个不要用createStatement。