package test;
import java.sql.*;
import java.io.*;
public class TestText
{
public static void main(String[] args){
  if(args.length!=1){
    System.out.println(
  "Usage:java com.tarena.jdbclab.Lab15 filename");
return;
  }
  Connection con = null;
  PreparedStatement ps = null;
  ResultSet rs = null;
  int id = 102;
  String fname = args[0];
  Blob blob = null;
  try{
con = JdbcUtil.getConnection();
System.out.println(con);
con.setAutoCommit(false);
InputStream in = new FileInputStream(fname);
byte[] content =
new byte[in.available()];
        in.read(content);

        in.close();       
String t = "szq_test";
String sql = 
  "insert into "+t+
" values(?,?)";
ps = con.prepareStatement(sql);
ps.setInt(1,id);
ps.setBytes(2, content);

ps.executeUpdate();
System.out.println(con);
con.commit();
  }catch(Exception e){
    e.printStackTrace();
try{
  if(con!=null) con.close();
}catch(Exception ex){
  ex.printStackTrace();
}
  }finally{
    JdbcUtil.release(rs,ps,con);
  } }
}
这是读取中文文件的代码存到SYBASE数据库。
package test;import java.io.FileInputStream;
import java.io.InputStream;
import java.io.*;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class Test {
public static void main(String[] args) {
Connection con=null;
Statement st=null;
ResultSet rs=null;
con=JdbcUtil.getConnection();
try {
st=con.createStatement();
String sql="select * from szq_test where id=101";
rs = st.executeQuery(sql);
rs.next();
byte[] b=rs.getBytes("context");
OutputStream out = 
new FileOutputStream("d:\\008.doc");
out.write(b);
out.close();
//for(int i=0;i<b.length;i++){
System.out.println(new String(b,"gbk"));
rs.close();
st.close();
con.close();
//}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是从数据库中读大对象到008.doc文件中。。中文出现乱码恳请高手帮忙看一下。。谢谢

解决方案 »

  1.   


    出现乱码很正常,你如果读取的是一个文本文件的话一般就不会出乱码了.因此doc格式的文件支持对文字的格式和插入多媒体等复杂排版,而这些东西都是要占文件大小的.所以你按纯文本的方式读取就出错了.
    你可以试一下,把一个doc文件中的文字加一些格式.然后把这个文件拉到已经打开的记事本编辑器里,你会发现乱码的出现.
      

  2.   


    我用TXT文本试了一下,没出现乱码
    那我应该怎么读取DOC格式的文本而不出现乱码呢?
      

  3.   

    查看一下数据库中存的数据编码格式是什么类型的,然后换成txt文件试试
      

  4.   

    你想想如果DOC文件中有了图片你还能让它给你转换成文字吗.它里面有好多格式标记符的.你是看不出来的,但它的的确确是存在的.如果你的DOC文件里面是纯文本的话即没有格式化过或插入什么多媒体附件类的话,你是可以读取的,也不会出现乱码的.