Hibernate2.1.6存储繁体中文到Oracle的问题 当然是Varchar2感觉不对,是哪里不对呢,你可以在存之前转码,去出来再转码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 存进去之前将字符转成ascii,取出来后,也转成ascii,两组ascii一比较,发现不同。因为存进去之前是用utf8的,保存的时候也指定了使用unicode,字符集用utf8,但是再取出来时就不对了。 所以怀疑保存到db的时候有问题,或者db table的设定有问题 如果是b/s,你有给webapp加filter吗?转码用。 呵呵,是B/S,但是用的是websphere4.0.x,只支持servlet2.2,filter只在servlet2.3中支持! 但是问题的关键已经不是从页面到java,而是java到数据库。页面到java呢,我们使用了websphere4的一个特性,强制客户端的request编码为utf-8,这样传到java中的时候,数据在form里,然后从form传回到页面时,仍然显示正常; 但是从form里的拿出utf8的数据,存到数据库里后,再拿出来就错了。 更进一步说,存到数据库里的就错了。 request.setCharacterEncoding("UTF-8") 这个方法在websphere4.0.x(只支持servlet2.2)是不被支持的,郁闷,不过现在已经明确是存数据到数据库时引起错误的了。 所以我想问:1、怎样配置hibernate写繁体中文;2、oracle table是否有其他配置;3、其他说明:websphere, oracle所在服务器(IBM AIX)编码为iso-8859。 如果说是山水緻景真的不錯,每張都可以當桌面是这样的繁体数据库用ZHS16GBKJava编码用GBK即可。 首先检查你拿到的数据是否是utf-8格式的,如果是的话,再检查你的oracle数据库编码,看是否为utf-8格式。如果oracle是gbk编码,很显然存进去的数据是错误的。 现在可以肯定的是:Java代码已经拿到了中文的utf8码oracle的编码:NLS_NCHAR_CHARACTERSETUTF8 唉,我现在怀疑在java拿到数据后,数据已经是utf8了,所以提个问题:怎么样可以应证中文数据已经是utf8编码? 谢谢! UP一下,我认为现在拿到的数据已经是中文的utf8编码。 问题是:数据库的字符集是ascii(记不清楚了,但肯定不是中文字符集,而是英文的)但是数据库又设置了以下内容NLS_NCHAR_CHARACTERSETUTF8意思是对于NChar或者NVarChar的内容采取utf8编码,只是数据库整体的仍然是英文编码。不知道这有没有影响, 另外,jdbc驱动使用的是class12.zip 如果你在java中确保是utf-8数据,那就可以证明你的oracle数据库不是utf-8格式的,所以才会出现乱码。解决办法1:把oracle改成utf-8格式解决办法2:不使用utf-8格式,把格式改成和数据库相同编码的格式就可以了。比如数据库是gbk编码,则把你的数据也改成gbk的编码格式并存入就可以了。 To mxlmwl(飞星) 谢谢,其实我就是担心数据库字符集设定为英文,而单对NChar或者NVarChar的字符集设定为UTF8,这样到底可不可以。 因为我是在客户方开发,他很可能不允许我改变当前数据库的字符集,毕竟还有其他的项目在上面跑。 所以我想确认的是,单把NChar或者NVarChar的字符集设定为UTF8,能不能实现把数据放进去。 也许这个问题也要去oracle论坛问问才好。 唉! 这个我也不太清楚了,呵呵,我对oracle的使用仅限与此,至于具体是否可以象你那么做,恐怕真得去oracle论坛问问,或者咨询一下oracle的售后。不过网上的资料很多,找找或许有所发现。或者你就用我说的第二个方法吧,采用和数据库相同的编码来存取。你也可以看看别的项目是如何对这种非ASCII字符的处理方式啊。 数据库的编码为: US7ASCII 。 问题是一方面我不知道它对应那种编码(ISO-8859 ?); 另外,我想它不是unicode,不是utf,繁体中文转成这种字符集肯定会丢失数据的。 唉! 终于在一个测试数据库上改了一把,将数据库字符集转成utf8,问题解决。 看来只将NLS_NCHAR_CHARACTERSET设置成utf8是没有作用的,关键是我的数据一到数据库,就被进行了转码: utf-8转成US7Ascii,造成了字节丢失,再将这种数据存到utf8的nvarchar2列里去,都没用,因为数据已经被破坏了。 To mxlmwl客户不同意改db,所以对于这个功能改用xml文件了,耽误我一个多星期,郁闷但是也感谢各位给我这么多帮助(尤其是mxlmwl同志),再次表示深深的谢意!祝大家工作顺利,天天开心,早日升官发财,不用做可怜的程序员。 ^_^! spring配置事务,启动报错 分页显示问题 关于页面刷新问题,高手进 用SSH做BBS时遇到的问题,大家进来看看 关于Hibernate的父子删除问题,请教各位,搜索没有找到答案。 谁能描述一下这个过程?看看谁的更准确? 关于联合创业的一些问题,欢迎大家来讨论^_^ 用JBOSS+TOMCAT 作WEB容器(有EJB的) 应用程序调用ejb组件,在命令行方式下异常 没学过java 我想自学求大神支招我该看什么书? <html:radio 中设定默认值的问题? 那位高手用 SpringIDE开发过Spring程序呀,是否能够将详细的不骤?/
因为存进去之前是用utf8的,保存的时候也指定了使用unicode,字符集用utf8,但是再取出来时就不对了。 所以怀疑保存到db的时候有问题,或者db table的设定有问题
1、怎样配置hibernate写繁体中文;
2、oracle table是否有其他配置;
3、其他说明:websphere, oracle所在服务器(IBM AIX)编码为iso-8859。
如果oracle是gbk编码,很显然存进去的数据是错误的。
oracle的编码:
NLS_NCHAR_CHARACTERSET
UTF8
怎么样可以应证中文数据已经是utf8编码? 谢谢!
数据库的字符集是ascii(记不清楚了,但肯定不是中文字符集,而是英文的)
但是数据库又设置了以下内容
NLS_NCHAR_CHARACTERSET
UTF8
意思是对于NChar或者NVarChar的内容采取utf8编码,只是数据库整体的仍然是英文编码。
不知道这有没有影响, 另外,jdbc驱动使用的是class12.zip
解决办法2:不使用utf-8格式,把格式改成和数据库相同编码的格式就可以了。比如数据库是gbk编码,则把你的数据也改成gbk的编码格式并存入就可以了。
不过网上的资料很多,找找或许有所发现。或者你就用我说的第二个方法吧,采用和数据库相同的编码来存取。你也可以看看别的项目是如何对这种非ASCII字符的处理方式啊。
客户不同意改db,所以对于这个功能改用xml文件了,耽误我一个多星期,郁闷但是也感谢各位给我这么多帮助(尤其是mxlmwl同志),再次表示深深的谢意!
祝大家工作顺利,天天开心,早日升官发财,不用做可怜的程序员。 ^_^!