从oracle11g中读取blob类型的字段值, 5C

用java怎么把blob转成String,blob读取出来是乱码,编码格式utf-8、gbk、等等都试了也是乱码
怎么解决

5个回答

show variables like 'character_set_client';//查看数据库编码
set names 'utf8'//注意在 数据库中是utf8 不是utf-8
然后 看你的java中的编码是否是utf-8 要都一致才能不乱码 一楼正解!

cfxxt
智臻Blog 代码中是utf-8,
3 年多之前 回复

if (str == null || "".equals(str)) {
return null;
}
return Hibernate.createClob(str);

//用这个试一下 clob.getSubString()

if (clob == null) {
return null;
}

    try {
        return clob.getSubString(1, (int) clob.length());
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        throw new AppException(e);
    }

用异常处理try{} catch()

show variables like 'character_set_client';//查看数据库编码
set names 'utf8'//注意在 数据库中是utf8 不是utf-8
然后 看你的java中的编码是否是utf-8 要都一致才能不乱码

cfxxt
智臻Blog 数据库编码就是utf8
3 年多之前 回复

直接从数据库里面拿(如果有hibernate支持)那就domain.getBlob()。然后用流去将blob转换成string 具体怎么做 百度。
存值的时候是将表单的string转换成blob再塞进数据库。newSerialBlob(String对象的.getBytes())

cfxxt
智臻Blog Blob b =(Blob)rs.getBlob("xp"); String blobString = new String(b.getBytes(1, (int) b.length()),"gbk");/
3 年多之前 回复
cfxxt
智臻Blog 没有用hibernate,我是想把数据库的blob类型的数据读出来,不是插入进去,读取出来各种乱码,有没有办法吧blob转成clob,clob就可以
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐