为什么用plsql查看到blob的值都是乱码呢??我下载下来也是乱码,我plsql是最新版本,可以直接查看的
下边是我下载的代码
String filename= rs.getString("C650000008");
Blob blob=rs.getBlob("C650000010");
File file = new File("F:\\file"+File.separator+filename);
InputStream ins = blob.getBinaryStream();
OutputStream fout = new FileOutputStream(file);
//下面将BLOB数据写入文件
int flength=(int)blob.length();
byte[] b = new byte[1024000];
int len = 0;
while ( (len = ins.read(b)) != -1){
fout.write(b, 0, len);
}
//依次关闭
fout.close();
ins.close();
没什么问题吧
这样子当然是乱码咯
你把一个byte数组直接写进文件,它又不会自己变成String的。
要[code="java"]new String(b,0,len);[/code]
plsql下用DBMS_LOB.READ读取Blob对象
blob里面什么数据都能存,当然就是不能阅读的。
[quote]好像blob在插入的时候加密了,所以我读出来的就是乱码 [/quote]
那你要知道是怎么加密的,然后解密才行。。。。。
乱码是什么样子的乱码,PLSQL查看的二进制文件 贴个图看看
要将byte封装成string[code="java"] new String(b,0,len); [/code],然后显示出来。
你查询时 是一个byte数据 你应该把他用上次进入的编码格式在吃输出来 例如 String str = new String(bytes,"utf-8"); 而且你上传的文件有的是解析不了的 例如office文档 你这样解析还是乱码