700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > oracle blob查重 如何解决oracle blob字段 的乱码问题

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

时间:2024-05-24 03:06:42

相关推荐

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

满意答案

jaychoa123

.11.07

采纳率:54%等级:8

已帮助:861人

字符串以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 = rst.getBlob("CONTENT");

if(blogObj!=null){

byte[] content = blogObj.getBytes(1, (int) blogObj.length());

try {

news.setContent(new String(content));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

乱码问题的解决方法:

news.setContent(new String(content,“UTF-8”));

案例二:读取blob,解决oracle中blob字段下载后的乱码问题

解决方法:注意不能按照像其他数据库那样的取法,而注意使用getBlob()这个oracle特有的方法。

ByteArrayOutputStream baos = new ByteArrayOutputStream();

if (queryResult.next()) ...{

tfzn018KtfjxxPO.setTec_attachid(queryResult.getLong("TEC_ATTACHID"));

tfzn018KtfjxxPO.setTec_attachpostfix(queryResult.getString("TEC_ATTACHPOSTFIX"));

java.sql.Blob blob = queryResult.getBlob("TEC_ATTACHCONTENT");

InputStream is = blob.getBinaryStream();

int bytesRead = 0;

byte[] buffer = new byte[8192];

// 从输入流读到字节数组

while ((bytesRead = is.read(buffer, 0, 8192)) != -1) ...{

// 从字节数组到输出流

baos.write(buffer, 0, bytesRead);

}

byte[] bufferFile = baos.toByteArray();

tfzn018KtfjxxPO.setTec_attachcontent(bufferFile);

mit();

}

总结如下:

1,导入导出的方法有问题,可能需要指定什么参数。

2,数据库版本不同,对blob的处理方法不一致所致。

3,jdbc连接问题。

通过注册表修改

HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0

NLS_LANG 改为你需要的字符集.

常用字符集(暂时只收集到两个)

AMERICAN_AMERICA.WE8ISO8859P1

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

american_america.AL32UTF8

1--------- AMERICAN_AMERICA.zhs16gbk

2--------- AMERICAN_AMERICA.utf8

修改下注册表即可。

00分享举报

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。