关闭

[综合] 字符编码

1920人阅读 评论(0) 收藏 举报

编码指不同国家的语言在计算机中的一种存储和解释规范。

- ASCII(American Standard Code for Information Interchange):使用7 bits表示一个字符,总共128个。

-- ISO-8859-1:将ASCII扩展到0~255后的字符集。

- ANSI(American National Institute)字符集:ASCII字符集,以及由此派生并兼容的字符集,正式的名称为MBCS(Multi-Byte Chactacter System)。如GB2312,GBK。

-- GB2312:简体中文字符集。它的第一个字节为128-255。系统可以据此判断,若第一个字节大于127,则把与该字节后紧接着的一个字节结合起来共两个字节组成一个中文字符。ASCII是其子集。

-- GBK:GBK是现阶段Windows及其他一些中文操作系统的缺省字符集。它包含2万多个字符,除了保持和GB2312兼容外,还包含繁体中文字,日文字符和朝鲜字符。值得注意的是GBK只是一个规范而不是国家标准,新的国家标准是GB18030-2000,它是比GBK包含字符更多的字符集。

-- Big5:台湾地区所使用的繁体中文字符集,编码方式与GB2312类似。

- Unicode(UTF-16: UCS Transformation Format):固定使用16 bits(两个字节)表示一个字符,总共65536个。

-- UTF-8:为了双字节的Unicode能够在现存的处理单字节的系统上正确传输设计。

    UCS 字符U+0000 到U+007F (ASCII) 被编码为字节0x00到0x7F (ASCII 兼容)。这意味着只包含7位ASCII 字符的文件在ASCII和UTF-8 两种编码方式下是一样的。

    所有>U+007F 的UCS 字符被编码为一个多个字节的串,每个字节都有标记位集。因此,ASCII 字节 (0x00-0x7F) 不可能作为任何其他字符的一部分。

    表示非 ASCII 字符的多字节串的第一个字节总是在0xC0到0xFD 的范围里, 并指出这个字符包含多少个字节。多字节串的其余字节都在0x80到0xBF范围里。这使得重新同步非常容易,并使编码无国界,且很少受丢失字节的影响。

    与Unicode的映射关系如下:

    Unicode编码(16进制)     UTF-8 字节流(二进制)
    0000 - 007F         0xxxxxxx
    0080 - 07FF         110xxxxx 10xxxxxx
    0800 - FFFF         1110xxxx 10xxxxxx 10xxxxxx

附1:当一个软件打开一个文本时,它要做的第一件事是决定这个文本究竟是使用哪种字符集的哪种编码保存的。软件一般采用三种方式来决定文本的字符集和编码:检测文件头标识;提示用户选择;根据一定的规则猜测。
最标准的途径是检测文本最开头的几个字节,如下表:
    EF BB BF       UTF-8
    FE FF              UTF-16/UCS-2, little endian
    FF FE              UTF-16/UCS-2, big endian
    FF FE 00 00  UTF-32/UCS-4, little endian.
    00 00 FE FF  UTF-32/UCS-4, big-endian.

附2:Big Endian是指低地址存放最高有效字节(MSB: Most Significant Byte),而Little Endian则是低地址存放最低有效字节(LSB: Least Significant Byte)。

[Big Endian]

   低地址                                            高地址
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     12     |      34    |     56      |     78    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

[Little Endian]

   低地址                                            高地址
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     78     |      56    |     34      |     12    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:83870次
    • 积分:1460
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:3篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论