jsp程序在oracle9i下乱码的问题!请教遇到过此问题的大虾!up有分!在线等......

jianyu807 2005-06-16 11:35:37
本来此程序是用oracle8.0.6.0.0的数据库的!在8的数据库下面无乱码问题
但后来公司的数据库升级到oracle9.0.1.1.1问题就出现了!

开始是程序无法运行,进行数据库操作数据的classes12库服务器的cpu占用率为100%,然后ie就死了!
后来更换了jdbc驱动为9自带.jar(1,098kb)原来的为classes12.jar(1,533kb)
更换驱动后可以操作数据库了,但出现了乱码问题(是乱码不是????)!

在9的jdbc文件夹下发现nls_charset12.jar(1,364kb)文件ocrs12.jar(34kb)文件,把这两个文件拷贝到我的工程文件
夹下的lib里面去也不能解决乱码的问题!

请遇到过此问题的大虾帮忙解答一下,谢谢了!
...全文
139 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_T_tiger 2005-06-29
  • 打赏
  • 举报
回复
学习中
mousefog 2005-06-29
  • 打赏
  • 举报
回复
路过
yllzb 2005-06-29
  • 打赏
  • 举报
回复
不客气,问题解决了吗?
jianyu807 2005-06-17
  • 打赏
  • 举报
回复
多谢 laughsmile(海边的星空)兄和yllzb(逸茗)兄!
字符集格式,9i和8i的都是用us7ascii格式的!
我先换个驱动试试!
dachun 2005-06-17
  • 打赏
  • 举报
回复
ISO-8859-1?
好象我用的都是ISO8859-1
jianyu807 2005-06-16
  • 打赏
  • 举报
回复
我估计就是驱动的问题了!!各位大哥们有用oracle9i的么?有的话,发分驱动给我哈!谢谢拉

jianyu807@gmail.com
BillyW 2005-06-16
  • 打赏
  • 举报
回复
调试一下,看看问题出在什么地方?jsp? servlet? db?
icewolf_li 2005-06-16
  • 打赏
  • 举报
回复
建议你到oracle官方网站下载确切版本的对于jdbc驱动
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html

同时要注意把classpath下老的驱动删除。
jianyu807 2005-06-16
  • 打赏
  • 举报
回复
UP一下!

小弟估计是classes12.jar的问题!!!
yllzb 2005-06-16
  • 打赏
  • 举报
回复
很可能是oracle驱动的问题,我发了一个ojdbc14-9.2.0.6.jar给你!
laughsmile 2005-06-16
  • 打赏
  • 举报
回复
首先查询数据库: select * from v where parameter='NLS_CHARACTERSET';
得到数据库的字符集,如果ZHS16GBK,则JDBC的操作不需要转码;如果是us7ascii,则需要转码或者作相关配置.下面以使用不同的数据库驱动程序为例来介绍.
如果使用Thin Driver,那么需要在查询数据库的时候将字符集由ISO转换为GBK,写入数据库的时候将字符集由GBK转换为ISO.
举个例子:
插入一条记录:
Connection conn=null;
PreparedStatement pstmt = null;
try {
String strSql="insert into tabA(A,B) values('1111','王超')";
conn=ds.getConnection();
strSql = new String(strSql.getBytes("GBK"), "ISO-8859-1");
pstmt = conn.prepareStatement(strSql);
pstmt.executeUpdate();
}
catch (Exception e) {
//logger.error(e, e);
}
finally {
disconn(conn, pstmt);
}
查询一条记录:
Connection conn=null;
PreparedStatement pstmt = null;
ResultSet rs=null;
try {
String strSql="select B from tabA where A='1111'";
conn=ds.getConnection();
strSql = new String(strSql.getBytes("GBK"), "ISO-8859-1");
pstmt = conn.prepareStatement(strSql);
rs=pstmt.executeQuery();
String strB;
if (rs.next()){
strB=new String(rs.getString(1) .getBytes("ISO-8859-1"), "GBK");
}
catch (Exception e) {
//logger.error(e, e);
}
finally {
disconn(conn, pstmt, rs);
}
这里建议你在属性文件里设置oracle字符集,根据字符集判断
是否转码,以增加应用的移植性.
jianyu807 2005-06-16
  • 打赏
  • 举报
回复
胸闷死哦!!难道叫我再用回8去么?各位大哥,帮帮忙呀!!!!
blueseahill 2005-06-16
  • 打赏
  • 举报
回复
UP
jianyu807 2005-06-16
  • 打赏
  • 举报
回复
再UP一下!

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧