当前位置:编程学习 > JAVA >>

急:求助高手解决OA正文BLOB转换成WORD出现乱码问题

OA正文存到数据库里面是BLOB大字段,现在需要批量把字段内容导出成为WORD文档。
写了一个JAVA方法,执行以后得到的文件是乱码,不知道是编码转换有问题还是别的,求助高手解决!
代码如下:
package com.htsoft.oa.model.archive;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.sql.BLOB;

public class OracleBlob {
//private DBstep.iDBManager2000 DbaObj ;
private File file = null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
public OracleBlob() {
  // DbaObj=new DBstep.iDBManager2000();      //创建数据库对象
}

public void readDoc(String outfile,String id)throws Exception{
   FileOutputStream fos = null;
   InputStream is = null;
//   String Sql = "SELECT FileBody,FileSize FROM info_document_file WHERE RecordID='" + id + "'";
        String Sql = "select file_body,file_size from document_file where file_id='75494'";
          try {
           Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
            String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
            String user = "jofoa";
            String password = "jofoa";
            con = DriverManager.getConnection(url, user, password);
            stmt = con.createStatement();
    
            ResultSet result = stmt.executeQuery(Sql);
            if (result.next()) {
              try {
              int fileSize=result.getInt("file_size");
              System.out.println("fileSize:"+fileSize);
              Blob blob=result.getBlob("file_body");
              file = new File(outfile);
                  if(!file.exists())
                  {
                      file.createNewFile();//如果文件不存在,则创建
                  }
                  fos = new FileOutputStream(file);
                  is = blob.getBinaryStream();// 读出数据后转换为二进制流
                  byte[] data = new byte[fileSize];
          
                  int size = 0;
                  while((size = is.read(data)) != -1)
                  {
                  String  sContent = new String(new String(data).getBytes("GBK"),"UTF-8");
                  System.out.println("sContent"+sContent);
//                  String aa= URLEncoder.encode(new String(data), "UTF-8");
//                  System.out.println("aa"+aa);
                      fos.write(data,0,size);
                  
                  }
                  System.out.println("文件导入成功");
              }
              catch (Exception ex) 
              {
               ex.printStackTrace();
               System.out.println("文件导入失败");
              }
            }
            result.close();
          }
          catch (SQLException e)
          {
           e.printStackTrace();
          }
        
      
}

public static void main(String args[])
{
   OracleBlob blob=new OracleBlob();
   try {
    blob.readDoc("f://test.doc", "1281088075378");
    //blob.insert("c://信息处WebService接口文档.doc");
   } catch (Exception e) {
    e.printStackTrace();
   }
}
}
出来的乱码是
  sr !org.ofbiz.entity.util.ByteWrapperuO35觍   [  bytest  [Bxpur  [B ? T?  xp  f 邢 唷??                >   ?                  .           0       ?    )   *   +   ,   -   
请高手解决,在线等!
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,