常用字符集介绍和编码转换原理

合集下载

MySQL中的字符集转换和数据转码

MySQL中的字符集转换和数据转码

MySQL中的字符集转换和数据转码在数据库管理系统中,字符集转换和数据转码是非常关键的概念。

MySQL作为一种流行的关系型数据库管理系统,也有着完善的字符集转换和数据转码功能。

本文将深入探讨MySQL中的字符集转换和数据转码,包括相关的概念、常见的问题和解决方法。

一、字符集转换的概念和原理1. 字符集的定义字符集是一套字符的集合和其对应的编码规则。

在MySQL中,常见的字符集有UTF-8、GBK、Latin1等。

2. 字符集转换的原理字符集转换是指将一个字符从一个字符集转换为另一个字符集的过程。

在MySQL中,字符集转换分为客户端字符集转换和服务端字符集转换。

客户端字符集转换是指将客户端发送的数据从客户端字符集转换为服务器字符集。

而服务端字符集转换则是将从数据库中取出的数据从服务器字符集转换为客户端字符集。

3. 字符集转换的问题和解决方法在字符集转换过程中,可能会出现乱码或者字符集不一致的问题。

为了解决这些问题,可以采取如下的方法:- 在MySQL连接时,显式设置客户端字符集和服务器字符集,保证它们一致。

- 在创建数据库和表时,指定正确的字符集,避免字符集不一致导致的问题。

- 在查询和插入数据时,充分了解和掌握MySQL中的字符集转换函数和转换规则,使用适当的函数进行数据转换。

二、数据转码的概念和常见问题1. 数据转码的定义数据转码是将一种编码格式的数据转换为另一种编码格式的数据的过程。

在MySQL中,常见的数据转码问题包括字符集不匹配、字符编码混乱和乱码等。

2. 数据转码的问题和解决方法在处理数据转码问题时,需要注意以下几个方面:- 首先,要保证数据库的字符集与数据文件的字符集一致,避免因字符集不一致而导致的数据转码问题。

- 其次,要注意数据的来源和数据的类型。

对于不同的数据来源和数据类型,采用不同的转码方法,如对于文本文件可以使用CONVERT函数进行转码,对于二进制文件可以使用BINARY类型。

常用字符集

常用字符集

常用字符集字符集,也称作字符编码、字体编码,它是由大量的字符组成的集合,用来表示数据的一种编码方式。

字符集是一种标准,可以定义和表示特定的字符。

字符集定义了特定码位表示字符,不仅包括字母数字以及标点符号,还有一些特殊字符,如表情符号等。

常用字符集主要有ASCII、Unicode、GBK、GB2312等。

ASCII是美国标准信息交换码,全称是“美国信息交换标准码”,是计算机最早采用的字符编码,用来表示英文字符和一些数字和符号,可以表示256个字符,只包括英文字母和一些特殊符号。

Unicode是国际标准组织创建的一种标准,用于建立文本编码。

它在互操作性方面表现良好,可以容纳各种文字,包括汉字。

Unicode 可以表示65536个字符,是一种宽字符集,能够表示中文、日文、韩文等语言的文字。

GBK是一种国家标准的字符集,它是对Unicode的一种拓展,由国家互联网信息中心制定的一种汉字信息交换编码,是中国最完整的汉字字符集,可以表示21300余个汉字及6763个汉字的组合,同时也包括一些常见的拉丁字母和符号。

GB2312是中国标准字符集,由国家标准总局于1980年制定,有一定的兼容性和可移植性,仅有汉字,共有6763个汉字及符号,被广泛用于中文编码。

字符集的应用范围非常广泛,它经常被用于文本处理、排版、信息存储和交换,是计算机文本处理的基础。

正确选择一种字符集,能够显著提高文本处理的效率,改善信息处理的质量。

字符集的发展及完善对人类的信息处理技术的进步发挥了重要作用,也为计算机信息处理提供了重要的基础。

国家在不断强调计算机中文字符集的研究和发展的重要性,以满足计算机应用的实时需求。

字符集是当今计算机信息处理技术不可缺少的一部分,它被广泛应用于电子邮件、文本资料库、网页等信息处理领域。

经过改进和发展,它也可以用于语音信息处理、视频信息处理和分析等方面,使技术发展变得更加多样化。

未来,字符集的研究和发展将继续推动计算机信息处理技术,发展出更加完善及先进的字符集体系,以满足用户对信息交流和处理的需要。

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、...

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、...

ASCIIASCII码是7位编码,编码范围是0x00-0x7F。

ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。

其中0x00-0x20和0x7F共33个控制字符。

只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。

HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。

早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。

GB2312GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。

区位码一般用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。

在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。

区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区。

它将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。

一级汉字是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。

GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。

可以用繁体汉字测试某些系统是不是只支持GB2312编码。

GB2312的编码范围是0xA1A1-0x7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE。

EUC-CN可以理解为GB2312的别名,和GB2312完全相同。

区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312及EUC-CN是实际计算机环境中支持这种字符集的编码。

HZ和ISO- 2022-CN是对应区位码字符集的另外两种编码,都是用7位编码空间来支持汉字。

了解计算机编码与字符集

了解计算机编码与字符集

了解计算机编码与字符集计算机编码与字符集是计算机科学中非常重要的概念。

在现代社会中,计算机已经成为我们生活中不可或缺的一部分,我们每天都在使用计算机进行各种各样的操作。

然而,如果不了解计算机编码与字符集的工作原理,我们就无法准确地处理和传输数据,给我们的日常工作和生活带来了不便。

一、计算机编码的意义计算机编码是将字符转换为二进制数的过程。

理论上,计算机只能识别二进制数,所以需要将我们使用的字符(比如字母、数字、符号等)转换成对应的二进制数,才能让计算机正确读取和处理。

不同的字符集和编码方式对于计算机来说是不一样的,所以正确地理解和使用计算机编码是至关重要的。

二、字符集的分类字符集是字符的集合,它定义了一个系统中所有可能的字符的集合。

常见的字符集有ASCII、Unicode等。

ASCII是美国国家标准的信息交换码,它使用7个位(bit)来表示一个字符,所以一共能表示128个字符。

ASCII的编码范围包括了英文字母、数字、标点符号等常见字符。

Unicode是全球字符集标准,它包含了世界上所有已知的字符,无论是汉字还是各国的文字,都有对应的Unicode编码。

Unicode为每一个字符都分配了唯一的数字码点,用来表示该字符。

Unicode编码范围非常广泛,目前已经超过了100,000个字符。

三、常见的编码方式为了满足不同语言和字符集的需求,有许多不同的编码方式被提出。

常见的编码方式有ASCII、UTF-8、UTF-16等。

1. ASCII编码ASCII编码是最早出现的字符编码,它使用7个位(bit)来表示一个字符,所以一共能表示128个字符。

ASCII编码范围包括了26个英文字母(大写和小写)、数字、标点符号等,它是最基本、最常用的字符编码之一。

2. UTF-8编码UTF-8是一种可变长度的Unicode编码,它使用8个位(bit)来表示一个字符。

UTF-8编码将Unicode中的字符转换为1到4个字节的编码,可以表示任意的Unicode字符。

汉字编码字符集

汉字编码字符集

汉字编码字符集汉字编码字符集是指用于表示和存储汉字的一套编码系统。

在计算机领域,为了能够准确地表示和处理汉字,人们设计了多种不同的汉字编码字符集。

本文将介绍几种常见的汉字编码字符集,包括GB2312、GBK、Unicode以及UTF-8。

一、GB2312GB2312是中国国家标准局于1980年发布的一种汉字编码字符集,是最早被广泛使用的汉字字符集之一。

GB2312字符集包含了7445个汉字和682个非汉字字符,采用双字节表示每个字符。

其中,第一个字节的范围是0xB0至0xF7,第二个字节的范围是0xA1至0xFE。

GB2312字符集主要适用于简体中文。

二、GBK随着计算机技术的发展和汉字数量的增加,GB2312字符集的容量已经无法满足需求。

为了解决这个问题,国家标准局于1995年发布了GBK字符集,它是对GB2312字符集的扩充和改进。

GBK字符集兼容GB2312字符集,同时加入了21003个汉字,总计包含了21886个汉字。

GBK字符集同样采用双字节表示每个字符,第一个字节的范围是0x81至0xFE,第二个字节的范围是0x40至0xFE。

GBK字符集支持简体中文和繁体中文。

三、UnicodeUnicode是一种国际标准字符集,旨在为全球所有字符提供唯一的编码。

Unicode采用16位的编码方案,可以支持最多65536个不同的字符。

不仅包括了各个国家语言的文字,还包括了数学符号、技术符号、图形符号等。

Unicode字符集为各种语言的文字提供了一个统一的编码标准。

四、UTF-8UTF-8是一种可变长度的Unicode编码方案,更好地解决了存储效率和兼容性的问题。

UTF-8使用1至4个字节来表示一个字符,根据不同的字符而变化。

对于单字节的字符,编码和ASCII码相同,兼容ASCII码。

对于多字节的字符,第一个字节的高位标识了字节数。

UTF-8字符集可以表示Unicode字符集中的所有字符。

在计算机系统中,为了使不同的系统能够正确地处理汉字编码,一般需要统一选择一种字符集来使用。

字符编码

字符编码

1、什么是字符编码,为什么要字符编码?2、区分“字符集”和“编码”3、几种常用的字符编码。

首先介绍一下拉丁字母:拉丁字母,也叨罗马字母,是当仂丐界上使用最广的字母系统。

拉丁字母,戒者说基本的拉丁字母,就是你所常见的到的ABCD 等26 个英文字母。

原先是欧洲那边使用的,后来由亍欧洲殖民主义,导致后来的美洲等地,也是用的这套字母体系。

而其他有些地方,比如越南等,本来有自己的文字语言的,结果受西斱文化的影响和由亍基督教的传播,也用拉丁字母了。

所以总的说,现在欧洲多数国家,美洲,澳洲,非洲的多数国家,都是用的拉丁字母,即你所常见的英文字母,也是拉丁字母。

而中国的汉语拼音,也是用的这个拉丁字母。

那字符编码是什么?计算机中存放的都是0 和1 的二进制值。

8 个位对应一个字节,常用16 迚制来表示。

而我们普通用户所希望看到的是,计算机把其所存储的对应的16 迚制的数值,转化为对应的字符,包括英文和中文等其他语言的字符,然后输出到屏幕上。

而所谓编码,就是,定义了一套规则,去指定,哪些数值,对应着哪些字符。

举个最简单的例子,常见65=0x41 对应的是大写字母A,97=0x61 对应的是小写字母a,而这套数值和字母之间的映射兰系,说白了,就是一套规则,就叫做字符编码,即我们常说的ASCII 编码。

所以字符编码就是:定义了一套规则,指定了计算机中存放的这么多值中的哪个值,对应了电脑屏幕显示出来的哪个字母。

区分一下“字符集”和“编码”使用哪些字符。

也就是说哪些汉字,字母和符号会被收入标准中。

所包含“字符”的集合就叫做“字符集”。

规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。

各个国家和地区在制定编码标准的时候,“字符的集合”和“编码”一般都是同时制定的。

因此,平常我们所说的“字符集”,比如:GB2312, GBK, JIS 等,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义。

C#基础知识:字符编码、编码转换

C#基础知识:字符编码、编码转换

C#基础知识:字符编码、编码转换⼀、 ASCII码我们知道,在计算机内部,所有的信息最终都表⽰为⼀个⼆进制的字符串。

每⼀个⼆进制位(bit)有0和1两种状态,因此⼋个⼆进制位就可以组合出256种状态,这被称为⼀个字节(byte)。

也就是说,⼀个字节⼀共可以⽤来表⽰256种不同的状态,每⼀个状态对应⼀个符号,就是256个符号,从00000000到11111111。

上个世纪60年代,美国制定了⼀套字符编码,对英语字符与⼆进制位之间的关系,做了统⼀规定。

这被称为ASCII码,⼀直沿⽤⾄今。

ASCII码⼀共规定了128个字符的编码,⽐如空格“SPACE”是32(⼆进制00100000),⼤写的字母A是65(⼆进制01000001)。

这128个符号(包括32个不能打印出来的控制符号),只占⽤了⼀个字节的后⾯7位,最前⾯的1位统⼀规定为0。

在C#中如果你想看看某个字母的ASCII码是多少,可以使⽤表⽰字符编码的类Encoding ,代码如下:string s = "a";byte[] ascii = Encoding.ASCII.GetBytes(s);我们通过调试器可以看到ascii中为97,也就是说a的ASCII码为97(1100001)⼆、⾮ASCII编码英语⽤128个符号编码就够了,但是⽤来表⽰其他语⾔,128个符号是不够的。

⽐如,在法语中,字母上⽅有注⾳符号,它就⽆法⽤ASCII码表⽰。

于是,⼀些欧洲国家就决定,利⽤字节中闲置的最⾼位编⼊新的符号。

⽐如,法语中的é的编码为130(⼆进制10000010)。

这样⼀来,这些欧洲国家使⽤的编码体系,可以表⽰最多256个符号。

但是,这⾥⼜出现了新的问题。

不同的国家有不同的字母,因此,哪怕它们都使⽤256个符号的编码⽅式,代表的字母却不⼀样。

⽐如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel ,在俄语编码中⼜会代表另⼀个符号。

几种常见字符集与字符编码

几种常见字符集与字符编码

⼏种常见字符集与字符编码字符集的概念 字符(Character)是各种⽂字和符号的总称,包括各国家⽂字、标点符号、图形符号、数字等。

⽽字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。

常⽤字符集 ASCII字符集、GB2312字符集、GBK字符集、 USC-3字符集、Unicode字符集等。

字符编码的概念 字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某⼀对象(例如:⽐特模式、⾃然数序列、8位组或者电脉冲),以便⽂本在计算机中存储和通过通信⽹络的传递。

常⽤字符编码 ASCII编码、GB2312编码、GBK编码、UFT-8编码等字符编码。

注意:不要把字符集和字符编码两者弄混淆。

虽然他们有些同名,⽐如ASCII有字符集也有ASCII的字符编码,他们是两个不同的概念。

下⾯我们详细讲解⼏种常⽤的字符集和字符编码1 ASCII字符集和ASCII编码 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的⼀套电脑编码系统。

它主要⽤于显⽰现代英语,⽽其扩展版本EASCII则可以勉强显⽰其他西欧语⾔。

它是现今最通⽤的单字节编码系统(但是有被Unicode追上的迹象),并等同于国际标准ISO/IEC 646。

ASCII字符集:主要包括控制字符(回车键、退格、换⾏键等);可显⽰字符(英⽂⼤⼩写字符、阿拉伯数字和西⽂符号)。

 ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数的规则。

使⽤7位(bits)表⽰⼀个字符,共128字符;但是7位编码的字符集只能⽀持128个字符,为了表⽰更多的欧洲常⽤字符对ASCII进⾏了扩展,ASCII扩展字符集使⽤8位(bits)表⽰⼀个字符,共256字符。

ASCII的最⼤缺点是只能显⽰26个基本拉丁字母、阿拉伯数⽬字和英式标点符号,因此只能⽤于显⽰现代美国英语(⽽且在处理英语当中的外来词如naïve、café、élite等等时,所有重⾳符号都不得不去掉,即使这样做会违反拼写规则)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常用字符集介绍和编码转换原理目录1. GB2312编码介绍 (2)1.1 基本信息 (2)1.2 GB标准 (2)1.3 分区表示 (2)1.4 字节结构 (2)2. 通用字符集UCS (3)2.1 定义 (3)2.2 概要 (3)2.3 实现级别 (3)2.4 与UNICODE的兼容关系 (3)3. unicode编码介绍 (3)3.1 基本简介 (4)3.2 编码实现 (4)3.2.1 编码方式 (4)3.2.2 实现方式 (5)4. UTF-8介绍 (5)4.1 基本介绍 (5)4.2 编码原理 (5)4. 转换原理 (7)1. GB2312编码介绍1.1 基本信息1.2 GB标准GB2312或GB2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集·基本集》,又称为GB0,由中国国家标准总局发布,1981年5月1日实施。

GB2312编码通行于中国大陆;新加坡等地也采用此编码。

中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。

GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。

对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。

1.3 分区表示GB 2312中对所收汉字进行了―分区‖处理,每区含有94个汉字/符号。

这种表示方式也称为区位码。

01-09区为特殊符号。

16-55区为一级汉字,按拼音排序。

56-87区为二级汉字,按部首/笔画排序。

10-15区及88-94区则未有编码。

举例来说,―啊‖字是GB2312之中的第一个汉字,它的区位码就是1601。

1.4 字节结构2. 通用字符集UCS2.1 定义2.2 概要通用字符集是所有包括了其他字符集。

它保证了与其他字符集的双向兼容,即,如果你将任何文本字符串翻译到UCS格式,然后再翻译回原编码,你不会丢失任何信息。

UCS包含了已知语言的所有字符。

除了拉丁语、希腊语、斯拉夫语、希伯来语、阿拉伯语、亚美尼亚语、乔治亚语,还包括中文、日文、韩文这样的象形文字,UCS还包括大量的图形、印刷、数学、科学符号。

ISO 10646定义了一个31位的字符集。

ISO 10646-1标准第一次发表于1993年,现在的公开版本是ISO/IEC 10646-1:2000。

ISO 10646-2在2001年发表。

UCS不仅给每个字符分配一个代码,而且赋予了一个正式的名字。

表示一个UCS或Unicode值的十六进制数通常在前面加上―U+‖,例如―U+0041‖代表字符―A‖。

2.3 实现级别并不是所有的系统都需要支持像组合字符这样的的先进机制。

因此ISO 10646指定了如下三种实现级别:级别1:不支持组合字符和谚文字母字符。

级别2:类似于级别1,但在某些文字中,允许一列固定的组合字符,因为如果没有最起码的几个组合字符,UCS就不能完整地表达这些语言。

级别3:支持所有的通用字符集字符,如,可以在任意一个字符上加上一个箭头或一个鼻音化符号.2.4 与UNICODE的兼容关系通用字符集是与UNICODE同类的组织,UCS-2和UNICODE兼容。

位数:它有UCS-2和UCS-4两种格式,分别是2字节和4字节。

范围:UCS-4只是在UCS-2前面加了0×0000。

3. unicode编码介绍Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。

它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

1990年开始研发,1994年正式公布。

随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。

备注:统一码联盟(英语:The Unicode Consortium)是一个致力于开发,维护,发展全球通用软件标准和数据格式,特别是维护Unicode编码标准的非牟利机构。

3.1 基本简介Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standard,目前第五版由Addison-Wesley Professional出版,ISBN-10: 0321480910)对外发表。

2006年7月的最新版本的Unicode 是5.0版本。

2005年3月31日推出的Unicode 4.1.0 。

另外,5.0 Beta 于2005年12月12日推出,5.2版本(unicode standard)于2009年10月1日正式推出,以供各会员评价。

目前Unicode标准,6.1版已发布(2012年1月31日)。

在unicode联盟网站上可以查看完整的6.1的核心规范。

Unicode定义了大到足以代表人类所有可读字符的字符集。

Java语言就用到了Unicode编码,从而实现了该语言的国际通用性。

3.2 编码实现3.2.1 编码方式Unicode是国际组织统一码联盟制定的可以容纳世界上所有文字和符号的字符编码方案。

Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位(码位就是可以分配给字符的数字)。

UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。

拓展了解:通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。

UCS-2用两个字节编码,UCS-4用4个字节编码。

历史上存在两个独立的尝试创立单一字符集的组织,即国际标准化组织(ISO)和多语言软件制造商组成的统一码联盟。

前者开发的ISO/IEC 10646 项目,后者开发的统一码项目。

因此最初制定了不同的标准。

1991年前后,两个项目的参与者都认识到,世界不需要两个不兼容的字符集。

于是,它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。

从Unicode 2.0开始,Unicode采用了与ISO 10646-1相同的字库和字码;ISO也承诺,ISO 10646将不会替超出U+10FFFF的UCS-4编码赋值,以使得两者保持一致。

两个项目仍都存在,并独立地公布各自的标准。

但统一码联盟和ISO/IEC JTC1/SC2都同意保持两者标准的码表兼容,并紧密地共同调整任何未来的扩展。

在发布的时候,Unicode一般都会采用有关字码最常见的字型,但ISO 10646一般都尽可能采用Century字型。

UCS-4根据最高位为0的最高字节分成2^7=128个group。

每个group再根据次高字节分为256个平面(plane)。

每个平面根据第3个字节分为256行(row),每行有256个码位(cell)。

group 0的平面0被称作BMP(Basic Multilingual Plane)。

将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。

每个平面有2^16=65536个码位。

Unicode计划使用了17个平面,一共有17*65536=1114112个码位。

在Unicode 5.0.0版本中,已定义的码位只有238605个,分布在平面0、平面1、平面2、平面14、平面15、平面16。

其中平面15和平面16上只是定义了两个各占65534个码位的专用区(Private Use Area),分别是0xF0000-0xFFFFD和0x100000-0x10FFFD。

所谓专用区,就是保留给大家放自定义字符的区域,可以简写为PUA。

平面0也有一个专用区:0xE000-0xF8FF,有6400个码位。

平面0的0xD800-0xDFFF,共2048个码位,是一个被称作代理区(Surrogate)的特殊区域。

代理区的目的用两个UTF-16字符表示BMP以外的字符。

在介绍UTF-16编码时会介绍。

如前所述在Unicode 5.0.0版本中,238605-65534*2-6400-2048=99089。

余下的99089个已定义码位分布在平面0、平面1、平面2和平面14上,它们对应着Unicode目前定义的99089个字符,其中包括71226个汉字。

平面0、平面1、平面2和平面14上分别定义了52080、3419、43253和337个字符。

平面2的43253个字符都是汉字。

平面0上定义了27973个汉字。

3.2.2 实现方式在Unicode中:汉字―字‖对应的数字是23383。

在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8、UTF-16、UTF-32。

UTF是―UCS Transformation Format‖的缩写,可以翻译成Unicode 字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。

例如,―汉字‖对应的数字是0x6c49和0x5b57,而编码的程序数据是:BYTE data_utf8[] = {0xE6, 0xB1, 0x89, 0xE5, 0xAD, 0x97}; // UTF-8编码WORD data_utf16[] = {0x6c49, 0x5b57}; // UTF-16编码DWORD data_utf32[] = {0x6c49, 0x5b57}; // UTF-32编码这里用BYTE、WORD、DWORD分别表示无符号8位整数,无符号16位整数和无符号32位整数。

UTF-8、UTF-16、UTF-32分别以BYTE、WORD、DWORD作为编码单位。

―汉字‖的UTF-8编码需要6个字节。

―汉字‖的UTF-16编码需要两个WORD,大小是4个字节。

―汉字‖的UTF-32编码需要两个DWORD,大小是8个字节。

根据字节序的不同,UTF-16可以被实现为UTF-16LE或UTF-16BE,UTF-32可以被实现为UTF-32LE或UTF-32BE。

下面介绍UTF-8、UTF-16、UTF-32、字节序和BOM。

4. UTF介绍4.1 基本介绍事实证明,对可以用ASCII表示的字符使用UNICODE并不高效,因为UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处。

为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,即UTF(Universal Transformation Format)。

相关文档
最新文档