Oracle字符集研究幻灯片.pptVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
字符集转换 如果源字符集和目标字符集一致,则保证全部客户端一致。 如果源和目标不一致,则保证导入和导出客户端一致,且与源或者目标保持一致。 字符集转换 为了避免在数据库迁移过程中由于字符集不同导致的数据损失,oracle提供了字符集扫描工具(character set scanner),通过这个工具我们可以测试在数据迁移过程中由于字符集转换可能带来的问题,然后根据测试结果,确定数据迁移过程中最佳字符集解决方案。 字符集转换 用sysdba用户登陆 执行$ORACLE_HOME\rdbms\admin\csminst.sql 然后退回到命令提示符 执行 csscan FULL=Y FROMCHAR=WE8ISO8859P1 TOCHAR=UTF8 log=check.log capture=y array=1000000 process=2 执行完毕以后查看log文件,可以知道那些转换会失败 字符集转换 字符集转换 字符集转换 OS字符集 OS字符集以及OS字符集在字符集转换中起的作用。 OS字符集 查看OS字符集 OS字符集 DEMO: 环境: OS:WINXP SP2 中文版 ORACLE 服务器和客户端在一台机器上 服务器字符集:AL32UTF8 国家字符集 AL16UTF16 客户端字符集: AL32UTF8 以下是在SQLPLUS里面的操作: OS字符集 SQL create table test (a varchar2(10)); 琛ㄥ凡鍒涘缓銆? SQL insert into test values (我); 宸插垱寤?1 琛屻€? SQL commit; 鎻愪氦瀹屾垚銆? SQL select a,dump(a) ?from test; A? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ----------? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? DUMP(A)? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? -------------------------------------------------------------------------------- 我? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? Typ=96 Len=2: 206,210? ?? ?? OS字符集 可以看到,服务器端和客户端都是UTF8但是显示出来的提示全部是乱码, 在看一下汉字我字的编码, 查了一下编码表,在ZHS16GBK里面是 206 98? ?,在UTF8里面是230 136 145,在UTF16里面应该是98 17 但是实际的值是什么呢?实际的编码值是206 210,既不是GBK,也不是UTF8和UTF16的编码,查了一下其它的编码表,最终发现 206 210是GB2312“我”字的编码 OS字符集 接着把数据库客户端编码切换成ZHS16GBK,看看会发生什么 SQL insert into test values(‘我’); 已创建 1 行。 SQL select a,dump(a) ?from test; A? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? DUMP(A)? 我? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? Typ=96 Len=3: 230,136,145 OS字符集 可以发现,数据库在插入时,准确的把我字转换成UTF8的编码,而在显示的时候又转换成了准确的汉字我, 怎么解释上面这个现象呢?? OS字符集 通过试验我们可以发现OS的字符集实际是GB2312的,但是由于客户端字符集和服务器端字符集一致,所以在上传数据的时候,认为不存在字符集转换,所以就直接把OS的汉字编码上传上去了,这也是我们看到的库中实际存放的是GB2312“我”字编码 206 210的原因,显示的时候同样的方式,认为数据库服务器与客户端字符集编码一致,不存在字符集转换,于是把206 210发到客户端,到了客户端,就正好原封不动的把206 210显示成为了汉字“我”。这也是造成提示乱码的原因,让GBK的窗口去解析UTF8的编码,从而产生乱码

文档评论(0)

mwk365 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档