Chinaunix首页 | 论坛 | 博客
  • 博客访问: 193493
  • 博文数量: 53
  • 博客积分: 2059
  • 博客等级: 大尉
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-30 03:03
文章分类
文章存档

2012年(4)

2011年(19)

2010年(30)

分类: LINUX

2011-03-24 17:34:22

最近公司和台湾有合作,所以台湾提供了几台服务器作为游戏服务器,最近在配置服务器的时候,出现了几个问题,以前关于本地字符编码没有详细了解,因为有合作所以在设置的时候格外小心,所以重新了解了一下关于编码的相关问题,大部分内容来自网络。
一,什么是字符集。
上面说的编码说的就是字符编码集,所以首先接受下什么是字符集。
简单的说字符集就是一套文字符号及其编码,比较规则的集合,世界上第一个字符集是美国标准化组织ANSI发布的ASCII(American Standard Code for Information Interchange),
二,常见的汉字字符集。
GB2312

    GB 2312-80《信息交换用汉字编码字符集 基本集》于1980年发布。该编码字符集根据GB 2311《信息技术 字符代码结构与扩充技术》(ISO/IEC 2022)提供的扩充技术,通过对GB 1988《信息技术 信息交换用ISO七位编码字符集》(ISO 646,ASCII)所规定C0控制集和G0图形字符集进行替换和扩充,形成双字节编码的新的编码字符集。规定了6763个汉字和682个非汉字图形。
      按照GB 2311的规定,图形字符在8位(或7位)代码中应具有由1个或多个8位(或7位)位组(字节)构成的编码表示,而由单个位组表示的每个字符所在的编码图形字符集应是94字符集(0x21~0x7E或0xA1~0xFE)或96字符集(0x20~0x7F或0xA0~0xFF)。如此,每个字符通过n个位组串列表示的编码图形字符集(n>1)应是94n字符集或96n字符集。通过转义字符ESC加上一些参数构成转义序列来指明调用GB 2312汉字字符集,再通过移位功能调用GB 2312中的各个94字符集。(在这94个字符集中,每个汉字字符和非汉字字符各占一个字位,这就是"区位"的由来)。
      GB2312规定的汉字为常用汉字,包括简化汉字三千余个。由于我国汉字数量巨大(约10万字),我国又陆续增加了六个辅助集。其中,基本集与第二、第四辅助集是简化汉字集,第一(即GB 12345)、第三、第五辅助集是繁体集,且基本集与第一、第二与第三、第四与第五辅助集分别有简、繁体字一一对应关系,(个别简、繁关系为一对多的汉字除外)。第七辅助集汉字的来源是GB13000.1的CJK统一汉字部分,为日本、韩国和台湾地区使用的汉字。七个字符集包含汉字共计约49,000字(简化字和繁体字分别编码)。
GB13000

      为了便于多个文种的同时处理,国际标准化组织下属编码字符集工作组研制了新的编码字符集标准,ISO/IEC 10646。该标准第一次颁布是在1993年,当时只颁布了其第一部分,即ISO/IEC 10646.1: 1993,我国相应的国家标准是GB 13000.1-93《信息技术 通用多八位编码字符集(UCS) 第一部分:体系结构与基本多文种平面》。制定这个标准的目的是对世界上的所有文字统一编码,以实现世界上所有文字在计算机上的统一处理。
      提到GB 13000(ISO/IEC 10646),顺便提到Unicode规范。Unicode规范可以被看作是GB 13000在产业界的翻版,是GB 13000以另一种形式在产业界的实现。施乐(Xerox)公司的专家Joseph D. Becker对Unicode的解释可以帮助我们理解GB 13000的意义,他说:Unicode这个名字意味着建立一个独一的(unique)、统一的(unified)、通用的(universal)编码(体系)。
      GB13000建立了一个全新的编码体系。ISO/IEC 10646被称作"多八位"编码字符集,是因为它采用四个"八位"(即8 bit或称作字节)编码。这四个字节被用来分别表示组、平面、行和字位。
      GB2312规定的汉字为常用汉字,包括简化汉字三千余个。由于我国汉字数量巨大(约10万字),我国又陆续增加了六个辅助集。其中,基本集与第二、第四辅助集是简化汉字集,第一(即GB 12345)、第三、第五辅助集是繁体集,且基本集与第一、第二与第三、第四与第五辅助集分别有简、繁体字一一对应关系,(个别简、繁关系为一对多的汉字除外)。第七辅助集汉字的来源是GB13000.1的CJK统一汉字部分,为日本、韩国和台湾地区使用的汉字。七个字符集包含汉字共计约49,000字(简化字和繁体字分别编码)。
      可以看出,GB13000的总编码位置高达2,147,483,648个(128组×256平面×256行×256字位)。目前实现的是00组的00平面,称为"基本多文种平面"(Basic Multilingual Plane, BMP),编码位置65536个。(由于基本多文种平面所有字符代码的前两个字节都是0(00组00平面XX行XX字位),因此,目前在默认情况下,基本多文种平面按照两字节处理。)

      GB13000的优点和特点非常明显:
--编码空间非常巨大,可以容纳多种文字同时编码,也就保证了多文种同时处理;
--作为统一的编码,拉丁语系的文字与其它文字一样,都是采用相同数目的"八位"编码,即:都是四字节,在基本多文种平面,都是双字节;
--注:对于GB1988(ISO646/ASCII)字符,直接增加高八位为0x00即可。
--字符和字形的区分十分清楚:字符是负载文本内容的抽象实体,而字形则是可视的具体图形形式;
--通过采用汉字认同规则,各国家/地区的汉字统一编码,既满足了各国家/地区对编码汉字数目的实际需求,又不至于由于汉字在基本多文种平面占据的码位过多而影响到其他文字的编码:

      由于世界上的文字数量巨大,不可能将所有文字编码,为此,划定了专用区,供标准使用者实现其对未编码字符的特别需要。

Unicode标准
      Unicode 标准目前在基本平面上与GB 13000保持一致。采纳UTF-16方案作为未来实现01到0F共15个辅助平面的方式。其它方面与GB 13000基本一致。
GBK

  随着信息技术在各行业应用的深入,GB 2312收录汉字数量不足的缺点已经初步显露出来。例如:"镕"字现在是高频率使用字,而GB 2312却没有为它编码,因而,政府、新闻、出版、印刷等行业和部门在使用中感到十分不便。1995年,全世界大多数的PC操作系统都实现了16/32位。GB 13000.1的实现出现了一线曙光。一方面为了对GB 2312进行扩充,一方面顺应当时技术的发展向GB 13000.1推进,同时兼顾当时最广泛采用GB 2312内码系统。原电子部和原国家技术监督局联合颁布了指导性技术文件《汉字内码扩展规范》1.0版,即GBK。
  在汉字处理系统中,由于GB 2312需要经常性的使用转移序列规则,最广泛使用的实际是经过GB 2312+8080H移位后的内码模式。因为如不使用转义序列规则,GB2312规定的一个汉字字符的交换码用两个ASCII图形字符编码的表示方法,在我国最初的计算机上实现中西文信息兼容时会造成汉字内码与汉字交换码的不一致性。为解决这一问题,国内外推出了十多种计算机汉字内码制式,最常用的就是两字节内码制式,而在其中以高位为"1"的两字节内码应用最广(所以要移位8080H),它是把汉字交换码两字节高位置"1"而成,例如在CC-DOS系统中。台湾的CNS 11643、日本的JIS 0203等标准也是采用同样方式来实现。
  GBK在GB 2312内码系统的基础上进行了扩充,其内码空间为0x8140 ~ 0xFEFE,去除第二字节的0x7F(192个码位),总共23940个码位。它收录了GB 13000.1-1993的全部20902个CJK统一汉字,包括GB 2312的全部6763个汉字。此外,它增补编码了52个汉字,13个汉字结构符(在ISO/IEC 10646.1: 2000中称为表意文字描述符)和一些常用部首与汉字部件。在GBK的内码系统中,GB 2312汉字所在码位保持不便,这样,保证了GBK对GB 2312的完全兼容。同时,GBK内码与GB 13000.1代码一一对应,为GBK向GB 13000.1的转换提供了解决办法。GBK并不是一个强制性的国家标准,只是一个行业指导规范,并没有强制力,但是由于得到了MicroSoft Windows 95的支持而大为流行。

GB 18030

  1995年之后的实践表明,GBK作为行业规范,缺乏足够的强制力,不利于其本身的推广,而我们寄予厚望的GB 13000的实现又脚步缓慢,现有汉字编码字符集标准已经不能满足我国信息化建设的需要。在银行、交通、公安、户政、出版印刷、国土资源管理等行业,对新的、大型的汉字编码字符集标准的要求尤其迫切。
为此,原国家质量技术监督局和信息产业部组织专家制定发布了新的编码字符集标准,GB 18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》。
  GB 18030的双字节部分完全采用了GBK的内码系统。在此基础上,做了四字节扩展,四个字节的编码空间依次是:0x81到0xFE,0x30到0x39,0x81到0xFE,0x30到0x39。总共1,587,600个码位。
  GB 18030的编码空间达到了总共23,940 + 1,587,600。它不仅可以收录我们需要的全部汉字,而且还有充足的空间收录我国少数民族文字。在2000年版中,GB 18030收录了ISO/IEC 10646.1: 2000的全部27,484个CJK统一汉字,13个表意文字描述符、部分汉字部首和部件、欧元符号。
  在编码体系上,GB 18030统一了内码和交换码的概念。它完全兼容GB 2312和GBK的编码体系,继承GBK的代码映射表的优点,解决了GB 18030和GB 13000之间的代码转换
总结,从这些字符集的发布时间来看,可以发现越是最新的字符集对文字的支持月多,简单的说的GB18030是GBK的超集,而GBK是GB13000 的超集和加强版,而GB13000是GB2312的更新版。
三,Linux设置字符集
在Linux设置字符集的配置文件是/etc/sysconfig/i18n
  1. LANG="zh_CN.GB18030"
  2. LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
  3. SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
  4. SYSFONT="latarcyrheb-sun16"
下面解释相关设置
LANG:是Language 决定系统的默认语言,即程序的菜单,工具栏默认输出法等。
LANGUAGE:专门控制图形界面下语言的设置
SUPPORTED:决定系统支持的语言,即系统能够显示的语言,不管该变量设置成什么,总是支持英文显示。
SYSFONT:system font 即系统默认支持的字体。
四:关于字符集设置
从上面可以看出,一般需要支持中文的时候,我们直接按照上面设置就可以了。
当然Linux默认总是支持英文的所以,在系统安装完成后默认的设置是:
  1. LANG="en_US.UTF-8"
  2. SYSFONT="latarcyrheb-sun16"
总结:这次仔细看了相关字符集的相关知识,发现自己以前走的太快了,一些基础的知识还是不牢固。
加油,以后要多积累。




阅读(2798) | 评论(0) | 转发(0) |
0

上一篇:nagios使用技巧

下一篇:Apache日志(转载)

给主人留下些什么吧!~~