Hibernate读取Blob乱码
在项目中又遇到乱码了!这我已经司空见惯了。呵呵.说说Hibernate读取Blob时为什么会乱码吧!!
说Blob乱码的,都一定是用blob来存放文本类型的东东吧!如果是二进制的,没什么乱码与不乱码之分啦。问题就出现在这里。blob存放是以二进制来存放的。当然,你写进数据库时是以gb2312编码进行写入。但Hibernate读取出来时转成String类型.Hibernate会进行一些底层处理有如:new String(str.getBytes("iso8859-1"),"gb2312"); 它这种操作是无法还原的。
解决方案:
1.将数据库中用bolb类型存放字符的通通改成MediumText或LongText类型。
2.改Hibernate包。
3.修改Hibernate映射表。将blob类型映射为blob,再在DAO里进行处理。
呵呵,第二种解决方案留给专家去做吧!!第三种没试不过一定可行的。
CAnca Torvals
2007.10.12