我遇到一个乱码问题,不太明白,来问一下;
先说软件版本:
数据库:oracle10g
语言:java se 1.6
库版本:jxl ,ojdbc14
设置:
oracle10g设置为utf8
大体流程是这样的,我用jxl读入excel数据,然后插入到oracle中;现在出现的问题是:
我入库的汉语出现乱码了,这些汉语在pl/sql下显示是正常的,在用java重新从数据库读入这些乱码,调试时看监视变量时也是正常的,在sql/plus下读入是乱码的;
操作系统为win 2003
pl/sql sql/plus都是用的默认设置字符集
我想让oracle中的数据保证是utf8格式的,怎么处理;(在WEB上发现,乱码改成gb2312显示就正常了)
我用的jdbc,通过ojdbc14用默认设置链接的数据库;

解决方案 »

  1.   

    附我的jdbc用法
    String cmd ("insert into xxx (a,b),values('"+str1+"','"+str2+"')");
    rs = stat.execute(cmd);
      

  2.   

    str1= new String(str1.getBytes("GB2312","UTF-8"));
    尝试下转码
      

  3.   

    我这个是个桌面程序,跟WEB没有关系;只是简单地把excel表数据读入然后通过jdbc方式入到数据库中;这种情况是你说的过滤器吗?
      

  4.   

    str1= new String(str1.getBytes("GB2312","UTF-8")); 
    尝试下转码
    这个试了没有
      

  5.   

    不用过滤器,写一个统一转码的方法啊
    str1= new String(str1.getBytes("GB2312","UTF-8")); 
    这里都有了
      

  6.   

    我在怀疑这样,因为系统宿主是WIN 2003,所以,我组织SQL时,JAVA发给ORACLE的是GB2312后的转码,
    我想有这样的解决方式是最好的,就是像JDBC中链接MYSQL,在URL里直接填上encoder=utf8这种方式行;
    可是,在网上搜的非官方解答是:ORACLE自己已经设定了UTF8就行了,这使我不知所措了
      

  7.   

    java 读入的string是正常的,也就是说,java里的string 已经是正常的unicode字符串了,我感觉就是在入库时被改成GB2312了;
      

  8.   

    不行的,win 系统不是我管的,我不能强制别人把系统改成utf8
      

  9.   

    excel表,这个表是在执行JAVA程序的系统上,这个系统是WIN,编码是gb2312