楼主: jeffli73

[精华] Oracle数据库字符集问题解析

[复制链接]
论坛徽章:
176
现任管理团队成员
日期:2011-05-07 01:45:08版主7段
日期:2012-07-05 02:21:03ITPUB长老会成员
日期:2015-05-07 15:11:10ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB牛人
日期:2010-10-25 12:41:322010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:19
171#
发表于 2009-8-1 21:40 | 只看该作者
支持LZ,谢谢

使用道具 举报

回复
论坛徽章:
176
现任管理团队成员
日期:2011-05-07 01:45:08版主7段
日期:2012-07-05 02:21:03ITPUB长老会成员
日期:2015-05-07 15:11:10ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB牛人
日期:2010-10-25 12:41:322010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:19
172#
发表于 2009-8-1 21:40 | 只看该作者
字符集总是首先去了解

使用道具 举报

回复
论坛徽章:
6
生肖徽章2007版:鸡
日期:2009-11-03 16:18:39数据库板块每日发贴之星
日期:2009-12-09 01:01:01ITPUB元老
日期:2009-12-09 10:59:032010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:06:24ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
173#
发表于 2009-11-24 11:06 | 只看该作者
学习了

使用道具 举报

回复
论坛徽章:
0
174#
发表于 2009-11-27 10:11 | 只看该作者
好帖,顶了再看

使用道具 举报

回复
招聘 : SAP实施
论坛徽章:
9
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442010新春纪念徽章
日期:2010-03-01 11:20:53SQL大赛参与纪念
日期:2011-04-13 12:08:17ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:50:44茶鸡蛋
日期:2012-02-29 11:04:04鲜花蛋
日期:2012-03-13 13:54:13蛋疼蛋
日期:2012-05-28 16:48:46
175#
发表于 2009-12-8 19:01 | 只看该作者
我在Oracle 10.2的测试中,发现实验结果分析五所说情况下的存储结果为????。我猜测是Oracle 10g在将汉字转为US7ASCII的时候,对超过127的内容都编码为?了。

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
176#
发表于 2009-12-9 03:06 | 只看该作者
原帖由 ai2ming 于 2009-12-8 05:01 发表
我在Oracle 10.2的测试中,发现实验结果分析五所说情况下的存储结果为????。我猜测是Oracle 10g在将汉字转为US7ASCII的时候,对超过127的内容都编码为?了。


Sounds like an interesting test. Please start a new thread and use a more meaningful subject. Show your test details excluding the lines that are completely irrelevant.

Yong Huang

使用道具 举报

回复
论坛徽章:
3
2010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:08:282011新春纪念徽章
日期:2011-02-18 11:43:36
177#
发表于 2009-12-14 15:21 | 只看该作者
好帖,顶一下

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:20:00
178#
发表于 2009-12-19 15:45 | 只看该作者
先收藏了。谢谢LZ

使用道具 举报

回复
论坛徽章:
0
179#
发表于 2009-12-20 10:10 | 只看该作者
有空好好看谢谢

使用道具 举报

回复
论坛徽章:
0
180#
发表于 2009-12-25 11:18 | 只看该作者

ZHS16GBK编码的“东北”向US7ASCII转化问题

实验结果分析四里的时候,当oracle将ZHS16GBK中的“东北”转化为US7ASCII,是这样的
当客户端字符集设置为ZHS16GBK后向数据库插入“东北”,Oracle检查发现数据库设置的字符集为US7ASCII与客户端不一致,需要进行转换,但字符集ZHS16GBK中的“东北”两字在US7ASCII中没有对应的字符,所以Oracle用统一的“替换字符”插入数据库,在这里为“?”,编码为63(00111111),这时,输入的信息实际上已经丢失,不管字符集设置如何改变(如下面引用的实验结果),第二行SELECT出来的结果也都是两个“?”号(注意是2个,而不是4个)。

实验结果分析五里,当向字符集为ZHS16GBK的数据库中插入“东北”,客户端设置US7ASCII,这个转化
在客户端字符集设置为US7ASCII时,向字符集为ZHS16GBK的数据库中插入“东北”,需要进行字符转换,“东北”的ZHS16GBK编码为 182(10110110)、171(10101011)与177(10110001)、177(10110001),由于US7ASCII为7bit编码,Oracle将这两个汉字当作四个字符,并忽略各字节的最高位,从而存入数据库的编码就变成了54(00110110)、43(00101011)与 49(00110001)、49(00110001),也就是“6+11”,原始信息被改变了。


这2个个转化都是ZHS16GBK编码的“东北”向US7ASCII转化,为什么却是不同的结果。oracle自动转化和客户端的转化是不同的??

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表