[Delphi] 常用字符集简介
转载
http://www.cnblogs.com/yangyxd/articles/4778483.html
字符集 |
ANSI (ASCII) |
GB 2312 |
GBK |
GB18030 信息交换用汉字编码字符集基本集的扩充 |
UTF-8 |
UTF-16 |
BIG5 |
英文字符 | 1 字节 | 1 字节 | 1 字节 | 1 字节 | 1 字节 | 2 字节 | 1 字节 |
中文字符 | 不支持 | 2 字节 | 2 或 4 字节 | 2 或 4 字节 | 3 ~ 4 字节 | 2 或 4 字节 | 2 字节 |
Delphi 2007(及更早) |
AnsiString | AnsiString | AnsiString | AnsiString | AnsiString | WideString | AnsiString |
Delphi 2009 (大于或等于) |
AnsiString | AnsiString | AnsiString | AnsiString | UTF8String | UnicodeString | AnsiString |
表示法 | 7位(bits)表示一个字符,共128字符,字符值从0到127,其中32到126是可打印字符。
ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。 |
EUC-CN
“第一位字节”使用0xB0-0xF7 “第二位字节”使用0xA1-0xFE |
GBK/1:
0xA1A0~0xA9EF(部分) GB2312非汉字符号 GBK/2: 0xB0A0~0xF7FE(部分) GB2312汉字 上面两个是GB2312的扩展,向上兼容; GBK/3: 0x8140~0xA0FE(部分) 扩充汉字 包括繁体 GBK/4: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体 GBK/5: 0xA840~0xA995(部分) 扩充非汉字 |
单字节字符: 0x00至0x7F码(对应于ASCII码的相应码)。 双字节字符: 采用GB/T 11383未采用的0x30到0x39作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0x81308130到0xFE39FE39。其中第一、三个字节编码码位均为0x81至0xFE,第二、四个字节编码码位均为0x30至0x39。 |
UTF-8使用使用1到6个可变长字节编码UNICODE字符。
每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由n位连续的1加一位0组成, 首字节连续的1的个数表示字符编码所需的字节数。 Unicode转换为UTF-8字节数计算规则: 如果Unicode小于0X80(Ascii字符),则转换后为1个字节。否则转换后的字节数为Unicode二进制位数加3再除以5。 ASCII字母使用1字节,重音文字、希腊字母或西里尔字母等使用2字节来储存,常用的汉字就要使用3字节,辅助平面字符则使用4字节。 |
首256字符保留给ISO 8859-1所定义的字符。
UTF-16的大尾序和小尾序储存形式都在用。一般来说,以Macintosh制作或储存的文字使用大尾序格式,以Microsoft或Linux制作或储存的文字使用小尾序格式。 为了弄清楚UTF-16文件的大小尾序,在UTF-16文件的开首,都会放置一个U+FEFF字符作为Byte Order Mark(UTF-16LE以FF FE代表,UTF-16BE以FE FF代表),以显示这个文字档案是以UTF-16编码,其中U+FEFF字符在UNICODE中代表的意义是ZERO WIDTH NO-BREAK SPACE,顾名思义,它是个没有宽度也没有断字的空白。 |
高位字节: 0xA1-0xF9,
低位字节: 0x40-0x7E及0xA1-0xFE 中文字符编码规则: 第一个字节 从0X81-0XFE,共126种 第二个字节 分别为0X40-0X7E,0XA1-0XFE,共157种 |
备注 | 1. 基于罗马字母表的一套电脑编码系统。 2. 它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO 646。 3. ASCII扩展字符集:它是从ASCII字符集扩充出来的,扩充后的符号增加了表格符号、计算符号、希腊字母和特殊的拉丁符号。 |
1. 共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。 2. 整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。各区包含的字符如下:01-09区为特殊符号;16-55区为一级汉字,按拼音排序;56-87区为二级汉字,按部首/笔画排序;10-15区及88-94区则未有编码。 3. 把换算成十六进制的区位码加上2020H,就得到国标码。国标码加上8080H,就得到常用的计算机机内码。 |
兼容 GB2312 中的全部汉字和符号。总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间(不包括0x7F)。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。 | 1. 该标准的字符总编码空间超过150万个编码位,收录了27484个汉字,覆盖中文、日文、朝鲜语和中国少数民族文字。
2. 与Unicode 3.0版本兼容,填补Unicode扩展字符字汇“统一汉字扩展A”的内容。并且与以前的国家字符编码标准(GB2312,GB13000.1)兼容。 3. GB 18030标准采用单字节、双字节和四字节三种方式对字符编码。 4. 2001年8月31日后在中国市场上发布的软件必须符合本标准。 |
1. Unicode转换为UTF-8时可将Unicode二进制从低位往高位取出二进制数字,每次取6位,如上述的二进制就可以分别取出为如下示例所示的格式,前面按格式填补,不足8位用0填补。
2. 非ASCII字符的UNICODE字符转化成UTF-8将需要至少2个字节。每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由n位连续的1加一位0组成, 首字节连续的1的个数表示字符编码所需的字节数。 3. UTF-32、UTF-16和 UTF-8 是 Unicode 标准的编码字符集的字符编码方案,UTF-16 使用一个或两个未分配的 16 位代码单元的序列对 Unicode 代码点进行编码;UTF-32 即将每一个 Unicode 代码点表示为相同值的 32 位整数。 |
1. 从Unicode 2.0开始,Unicode采用了与ISO 10646-1相同的字库和字码。
2. 在未引入辅助平面字符时,UTF-16与UCS-2所指的是同一的意思。对于小于0x10000的UCS码,UTF-16编码就等于UCS码。 3. UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码。 4. 把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。 |
1. Big5字符集共收录13,053个中文字,该字符集在中国台湾使用。
2. 0xA140-0xA3BF为标点符号、希腊字母及特殊符号。 3. 0xA259-0xA261,存放了双音节度量衡单位用字:兙兛兞兝兡兣嗧瓩糎。 4. 0xA440-0xC67E为常用汉字,先按笔划再按部首排序 5. 0xC940-0xF9D5为次常用汉字,亦是先按笔划再按部首排序。 |