急:求助高手解决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.ByteWrapperuO35觍 [ bytest [Bxpur [B ? T? xp f 邢 唷?? > ? . 0 ? ) * + , -
请高手解决,在线等!
补充:Java , Java相关