日期:2014-05-16  浏览次数:21016 次

如何取出存在oracle数据库中blob类型中的word文档呢?请高手指点
java.sql.PreparedStatement pstmt = dbUtil.getConection().prepareStatement("select t.filebody BLOBCOL from app_2.td_octl_document_file t where t.recordid='45632'"); 
  ResultSet rs = pstmt.executeQuery();
  while (rs.next()) {
  /* 取出此BLOB对象 */
  oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
  /* 以二进制形式输出 */
// System.out.println();
  OutputStream out = new FileOutputStream("c:/catalog/45632.doc");
   
  byte[] b =blob.getBytes(1,(int)blob.length());
   
  out.write(b);

  out.close();
  }
  /* 正式提交 */
   
  } catch (Exception ex) {
  /* 出错回滚 */
   
  try {
throw ex;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }


代码如上:这样能把.doc文件输入到指定路径,但打开全是乱码?有人遇见过这种情况吗?

------解决方案--------------------
编码的原因。
Java默认采用的编码为unicode,与数据库采用的编码会有差别。

要进行编码的转换。