如何解决oracle blob字段 的乱码问题

如何解决oracle blob字段 的乱码问题,第1张

字符串以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数据库查询汉子显示乱码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9474469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存