字符串以blob以byte[] 二进制的形式存成blob字段
案例一:
oracle数据库服务器系统使用的是UTF-8编码或者是AL32UTF8编码
2在Web应用中已经将请求编码设置为UTF-8编码
3二进制数据的取得
1
2
3
4
5
6
7
8
9
10
11
Blob blogObj = rstgetBlob("CONTENT");
if(blogObj!=null){
byte[] content = blogObjgetBytes(1, (int) blogObjlength());
try {
newssetContent(new String(content));
} catch (UnsupportedEncodingException e) {
eprintStackTrace();
}
}
newssetContent(new String(content,“UTF-8”));
案例二:读取blob,解决oracle中blob字段下载后的乱码问题
解决方法:注意不能按照像其他数据库那样的取法,而注意使用getBlob()这个oracle特有的方法。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (queryResultnext()) {
tfzn018KtfjxxPOsetTec_attachid(queryResultgetLong("TEC_ATTACHID"));
tfzn018KtfjxxPOsetTec_attachpostfix(queryResultgetString("TEC_ATTACHPOSTFIX"));
javasqlBlob blob = queryResultgetBlob("TEC_ATTACHCONTENT");
InputStream is = blobgetBinaryStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 从输入流读到字节数组
while ((bytesRead = isread(buffer, 0, 8192)) != -1) {
// 从字节数组到输出流
baoswrite(buffer, 0, bytesRead);
}
byte[] bufferFile = baostoByteArray();
tfzn018KtfjxxPOsetTec_attachcontent(bufferFile);
connectioncommit();
}
总结如下:
1,导入导出的方法有问题,可能需要指定什么参数。
2,数据库版本不同,对blob的处理方法不一致所致。
3,jdbc连接问题。
通过注册表修改
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0
NLS_LANG 改为你需要的字符集
常用字符集(暂时只收集到两个)
AMERICAN_AMERICAWE8ISO8859P1
SIMPLIFIED CHINESE_CHINAZHS16GBK
american_americaAL32UTF8
1--------- AMERICAN_AMERICAzhs16gbk
2--------- AMERICAN_AMERICAutf8
修改下注册表即可。
以上就是关于java 怎么获得文件编码格式全部的内容,包括:java 怎么获得文件编码格式、急!急!JAVA中ASCII转码问题、如何解决oracle blob字段 的乱码问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)