Chinaunix首页 | 论坛 | 博客
  • 博客访问: 175678
  • 博文数量: 89
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 565
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-24 10:16
文章分类

全部博文(89)

文章存档

2013年(1)

2012年(1)

2011年(8)

2010年(45)

2009年(34)

我的朋友

分类:

2010-09-29 15:36:47

DB2数据库UTF-8字符集的汉字占3个字节


在使用远程联合数据库对象的时候发现一个问题:
1、连接到远程数据库查询数据
 
 

select jybs_mx
  from mq_agntinfo
 fetch first 1 rows only
  with ur;


结果

JYBS_MX
0会员降级


2、连接本地数据库,通过远程联合数据库对象查询同一个表

结果却是

JYBS_MX
0会员降

和远程数据库相比,少了一个汉字

3、通过以下SQL语句

select jybs_mx,length(trim(jybs_mx))
from mq_agntinfo
fetch first 1 rows only
with ur;

 

连接远程数据库查询结果是:

JYBS_MX    2
0会员降级    9

 

而连接本地数据库查询的结果却是:
 

JYBS_MX    2
0会员降     10

 

本地数据库把1个汉字作为3个字节处理,而远程数据库把1个汉字作为2个字节处理,而字段 JYBS_MX 的数据类型是varchar(10),超过部分被截掉了。

 

4、分别查看远程数据库和本地数据库的字符集

原来远程数据库的字符集是“GBK”,而本地数据库的字符集是“UTF-8”

结论:DB2数据库字符集为UTF-8时,1个汉字占3个字节

 

5、简单的解决办法:

把本地的昵称对应的字段类型长度改大,问题解决。

阅读(1606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~