字符串以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
修改下注册表即可。
打开PLSQL
d出登陆界面,进去登陆
随便写了一个查询语句,发现显示有乱码
解决办法:
先查看oracle服务器端的字符编码是什么
配置一个环境变量就可以解决问题
变量名称:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINAZHS16GBK
按照下面图是
加好环境变量之后关闭PLSQL重新打开,写一个查询试试效果
如下图所示说明乱码问题解决。
以上就是关于如何解决oracle blob字段 的乱码问题全部的内容,包括:如何解决oracle blob字段 的乱码问题、plsql连接oracle数据库查询汉子显示乱码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)