http://expert.csdn.net/Expert/topic/1446/1446030.xml?temp=.4131739

解决方案 »

  1.   

    那有可能是你的oracle没有设置正确的字符集假如你在sql*plus下插入一条包含汉字的数据后查出来是乱码,就是这个原因了,或者你直接select '汉字' as test from dual;看看
      

  2.   

    因为你中文在不同页面之间传递需要这样写
    String maker1=request.getParameter("maker");
    String maker=new String(maker1.getBytes("8859_1"),"gb2312");
      

  3.   

    在java下面跑的是iso8859-1
    在oracle跑的是gb2312,但可以设置所以你要搞清你的oracle是用的什么字符集!
      

  4.   

    表单数据接受的时候要做中文处理
    String str = new String(request.getParameter("str").getBytes("ISO8859_1"));
    这样str才可以插入数据库!
      

  5.   

    weimenren(愚人码头) ,我用你的方法查出来的结果是:
    TEST
    ----
    ??请问怎么解决?谢谢了
      

  6.   

    修改注册表运行regedit,HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG 修改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      

  7.   

    如果你在oracle中定义的数据类型是varchar2
    那么在你的java程序中向oracle写入数据的时候需要进行数据转换
    比较常用的方法是定义一个转换方法:
    public String getStr(String str){
        try{
            String temp_p=str;
            byte[] temp_t=temp_p.getBytes("ISO8859-1");
            String temp=new String(temp_t);
            return temp;
        } catch(Exception e){
        }
        return null;
    }
    比如现在需要向数据库中写入一个字符串name,
    String Name = getStr(name);
    然后将Name写入数据库,读取的时候可以直接读,不需要转换。另:如果oracle中的数据类型是varchar,则好象不需要转换!你可以试试,有问题我们再探讨!
      

  8.   

    用下面的方法试一试:
                byte[] bytea=String.getBytes("ISO8859-1");
                return new String(bytea,"GB2312");
      

  9.   

    你如果用的是Oracle8.1.6可能是会出这样的问题,你用0racle8.1.7的class12.zip,就可以解决这个问题了
      

  10.   

    我用的是sqlserver也是这个问题,所以我想是代码的事
      

  11.   

    sql=new String(sql.getBytes("ISO8859_1"));
    然后再直接updata和query。试试!!!
      

  12.   

    建议直接byte[] bytea=String.getBytes("ISO8859-1");
             
    然后将bytea存入oracle不转换成string