关于blob问题,真是让人蛋疼

为什么用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文档 你这样解析还是乱码