【发布时间】:2013-12-19 00:21:20
【问题描述】:
我正在从 DB 中读取 Oracle BLOB,并希望将其转换为可读字符串。 BLOB 是用二进制编码的文本,我很确定它是用 Base64 编码的。
我读取 BLOB 的代码返回了一个带有无法识别字符的字符串:
public String getStringFromBLOB(String sql) {
...
resultSet.next();
BLOB blob = null;
blob = ((OracleResultSet) resultSet).getBLOB(1);
byte[] bdata = blob.getBytes(1, (int) blob.length());
String tmpStr =new String(bdata);
str = new String(tmpStr.getBytes("UTF8"), "EUC_KR");
return str;
}
任何帮助将不胜感激。
【问题讨论】:
-
为什么要将生成的 byte[] 转换为字符串?你确定它是一个字符串?还有UTF8?如果是这样,为什么将其存储为 BLOB?
-
如果你将它存储为一个 blob,你为什么还要费心对它进行 base-64 编码呢?在我看来,您需要更仔细地调查真实情况。
-
也许你的意思是
return new String(bdata, "EUC_KR");。 -
通常使用 BASE64 编码的文本来防止它被各种字符串转换破坏。