考试网 >> IT认证 >> Oracle >> Oracle指导 >> Oracle数据库字符集问题解析(2)

Oracle数据库字符集问题解析(2)

发布时间:2006-06-28 09:57     点击:
分页:[1] 2 3 4  下一页

实验结果分析二 

quote: 

--------------------------------------------------------------------------------

[ 更改客户端字符集为ZHS16GBK

D:>SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

D:>SQLPLUS "/ AS SYSDBA"

无法正常显示数据

SQL> SELECT * FROM TEST;

R1

--------------------

6+11

疑问1:ZHS16GBK为US7ASCII的超集,为什么在ZHS16GBK环境下无法正常显示 

--------------------------------------------------------------------------------

 

这主要是因为Oracle检查发现数据库设置的字符集与客户端配置字符集不同,它将对数据进行字符集的转换。数据库中实际存放的数据为182(10110110)、171(10101011)、177(10110001)、177(10110001),由于数据库字符集设置为US7ASCII,它是一个7bit的字符集,存储在8bit的字节中,则Oracle忽略各字节的最高bit,则182(10110110)就变成了54(0110110),在ZHS16GBK中代表数字符号“6”(当然在其它字符集中也是“6”),同样过程也发生在其它3个字节,这样“东北”就变成了“6+11”。

实验结果分析三 

quote: 

--------------------------------------------------------------------------------

最初由 tellin 发布

用ZHS16GBK插入数据

SQL> INSERT INTO TEST VALUES(’东北’);

1 row created.

SQL> SELECT * FROM TEST;

R1

--------------------

6+11

??

SQL> EXIT

--------------------------------------------------------------------------------

quote: 

--------------------------------------------------------------------------------

更改客户端字符集为US7ASCII 

D:>SET NLS_LANG=AMERICAN_AMERICA.US7ASCII
分页:[1] 2 3 4  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有