Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2914627
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: Oracle

2013-04-18 23:43:37

视频地址:


一、字符集的基本知识:
1、大陆、新加波多用GBK;台湾、香港、澳门多用BIG5;此两种都是双字节字符集;
   1991成立unicode协会,UTF-8编码是unicode字符集最流行的编码方式;unicode是变长字符集;中日韩的unicode字符集使用3byte;
2、超集与子集不用进行字符集转换;
3、oracle字符集的命名:地区+字符位数(bit)+字符集名称;
   US7ASCII:
   WE8ISO8859P1:西欧常用;
   AL32UTF8、ZHS16GBK:中国大陆常用;AL32UTF8一个汉字占3个字节,ZHS16GBK一个汉字占2个字节;
4、在设计汉字字段时需要考虑oracle的字符集,例如:
  
5、oracle local builder的使用:
   :~> lbuilder
6、选择字符集需考虑的因素;
二、乱码的产生和消除(中文乱码):
1、客户端字符集设置:环境变量NLS_LANG;
   NLS_LUNG = LANGUAGE_TERRITORY.Client CHARACTERSET
2、windows查看客户端字符集两种方法:
   (1)E:\>chcp
        活动代码页: 936
        ----936对应的字符集是GBK,在“控制面板——区域和语言——高级”中可以找到
   (2)在客户端使用ue查看一个汉字的编码,例如“一”的16进制编码为“d2bb”,使用oracle带的lbuilder查看“一”的GBK编码为“d2bb”,从而确定该客户端的字符集为GBK;
3、lunux下查看客户端字符集:
   :~> echo 一 | od -t x1
   然后用显示的十六进制编码到lbuilder中产看;
4、客户端字符集设置例子:
   同过修改客户端字符集和环境变量NLS_LANG,插入oracle 4条数据:
  
   第1条正确:客户端字符集为GBK,环境变量设置成ZHS16GBK,oracle认为客户端时ZHS16GBK,把“一”存储成AL32UTF8时进行了正确地转换;
   第3条正确:客户端字符集为UTF-8,环境变量设置成AL32UTF8,oracle认为客户端为AL32UTF8,把“一”存储成AL32UTF8,存储时不用进行转换;
   第2条乱码:客户端字符集为GBK,环境变量设置成了AL32UTF8,oracle认为客户端字符集是AL32UTF8,把“一”的GBK编码没有转换存储成AL32UTF8编码,所以乱码;
   第4条乱码:客户端字符集为UTF-8,环境变量设置成了ZHS16GBK,oracle认为客户端字符集是ZHS16GBK,把“一”的UTF-8编码当作GBK编码进行了转换后存储成AL32UTF8编码,所以乱码;
5、不能只看中文的显示,即使显示不是乱码也可能存储错误;
   应该使用dump进行测试,按照以上几条情况进行分析;
三、数据迁移中的字符集转换
1、表空间传输不支持不同字符集表空间之间的迁移;
2、数据泵(expdp、impdp)已XML的格式保存源数据库的字符集信息,不再和客户端发生字符集的转换;
   而exp、imp需要和客户端字符集发生转换;
3、SQL loader使用环境变量NLS_LANG或控制文件中的charecterset表示被加载文件的字符集;
   oracle提供了一个工具来查看被加载文件的字符集:lcsscan;
:~> lcsscan -help
Language and Character Set File Scanner v2.1
 (c) Copyright 2003, 2004 Oracle Corporation.  All rights reserved.
 You can control how LCSSCAN runs by entering the LCSSCAN command
 followed by the required parameters. To specify parameters, you use
 keywords:
   Example: LCSSCAN RESULTS=2 END=1000 FORMAT=HTML FILE=index.html
 Keyword    Description (Default)
 --------------------------------------------------------------------
 RESULTS    number of language and character set pairs to return (1)
 BEGIN      beginning byte offset of file (1)
 END        ending byte offset of file (end of file)
 FORMAT     file format TEXT, HTML or AUTO detect (TEXT)
 FILE       name of input file
 HELP       show help screen (this screen)
四、小结
字符集三要素:客户端字符集、数据库字符集、两者之间可能发生的转换;


 

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