当然是Varchar2感觉不对,是哪里不对呢,你可以在存之前转码,去出来再转码

解决方案 »

  1.   

    存进去之前将字符转成ascii,取出来后,也转成ascii,两组ascii一比较,发现不同。
    因为存进去之前是用utf8的,保存的时候也指定了使用unicode,字符集用utf8,但是再取出来时就不对了。  所以怀疑保存到db的时候有问题,或者db table的设定有问题
      

  2.   

    如果是b/s,你有给webapp加filter吗?转码用。
      

  3.   

    呵呵,是B/S,但是用的是websphere4.0.x,只支持servlet2.2,filter只在servlet2.3中支持! 但是问题的关键已经不是从页面到java,而是java到数据库。页面到java呢,我们使用了websphere4的一个特性,强制客户端的request编码为utf-8,这样传到java中的时候,数据在form里,然后从form传回到页面时,仍然显示正常; 但是从form里的拿出utf8的数据,存到数据库里后,再拿出来就错了。 更进一步说,存到数据库里的就错了。
      

  4.   

    request.setCharacterEncoding("UTF-8") 这个方法在websphere4.0.x(只支持servlet2.2)是不被支持的,郁闷,不过现在已经明确是存数据到数据库时引起错误的了。 所以我想问:
    1、怎样配置hibernate写繁体中文;
    2、oracle table是否有其他配置;
    3、其他说明:websphere, oracle所在服务器(IBM AIX)编码为iso-8859。
      

  5.   

    如果说是山水緻景真的不錯,每張都可以當桌面是这样的繁体数据库用ZHS16GBKJava编码用GBK即可。
      

  6.   

    首先检查你拿到的数据是否是utf-8格式的,如果是的话,再检查你的oracle数据库编码,看是否为utf-8格式。
    如果oracle是gbk编码,很显然存进去的数据是错误的。
      

  7.   

    现在可以肯定的是:Java代码已经拿到了中文的utf8码
    oracle的编码:
    NLS_NCHAR_CHARACTERSET
    UTF8
      

  8.   

    唉,我现在怀疑在java拿到数据后,数据已经是utf8了,所以提个问题:
    怎么样可以应证中文数据已经是utf8编码?  谢谢!
      

  9.   

    UP一下,我认为现在拿到的数据已经是中文的utf8编码。 问题是:
    数据库的字符集是ascii(记不清楚了,但肯定不是中文字符集,而是英文的)
    但是数据库又设置了以下内容
    NLS_NCHAR_CHARACTERSET
    UTF8
    意思是对于NChar或者NVarChar的内容采取utf8编码,只是数据库整体的仍然是英文编码。
    不知道这有没有影响, 另外,jdbc驱动使用的是class12.zip
      

  10.   

    如果你在java中确保是utf-8数据,那就可以证明你的oracle数据库不是utf-8格式的,所以才会出现乱码。解决办法1:把oracle改成utf-8格式
    解决办法2:不使用utf-8格式,把格式改成和数据库相同编码的格式就可以了。比如数据库是gbk编码,则把你的数据也改成gbk的编码格式并存入就可以了。
      

  11.   

    To mxlmwl(飞星) 谢谢,其实我就是担心数据库字符集设定为英文,而单对NChar或者NVarChar的字符集设定为UTF8,这样到底可不可以。  因为我是在客户方开发,他很可能不允许我改变当前数据库的字符集,毕竟还有其他的项目在上面跑。 所以我想确认的是,单把NChar或者NVarChar的字符集设定为UTF8,能不能实现把数据放进去。   也许这个问题也要去oracle论坛问问才好。 唉!
      

  12.   

    这个我也不太清楚了,呵呵,我对oracle的使用仅限与此,至于具体是否可以象你那么做,恐怕真得去oracle论坛问问,或者咨询一下oracle的售后。
    不过网上的资料很多,找找或许有所发现。或者你就用我说的第二个方法吧,采用和数据库相同的编码来存取。你也可以看看别的项目是如何对这种非ASCII字符的处理方式啊。
      

  13.   

    数据库的编码为: US7ASCII 。 问题是一方面我不知道它对应那种编码(ISO-8859 ?); 另外,我想它不是unicode,不是utf,繁体中文转成这种字符集肯定会丢失数据的。  唉!
      

  14.   

    终于在一个测试数据库上改了一把,将数据库字符集转成utf8,问题解决。 看来只将NLS_NCHAR_CHARACTERSET设置成utf8是没有作用的,关键是我的数据一到数据库,就被进行了转码: utf-8转成US7Ascii,造成了字节丢失,再将这种数据存到utf8的nvarchar2列里去,都没用,因为数据已经被破坏了。
      

  15.   

    To mxlmwl
    客户不同意改db,所以对于这个功能改用xml文件了,耽误我一个多星期,郁闷但是也感谢各位给我这么多帮助(尤其是mxlmwl同志),再次表示深深的谢意!
    祝大家工作顺利,天天开心,早日升官发财,不用做可怜的程序员。 ^_^!