900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > BIG5编码 GB编码(GB2312 GBK ...) Unicode编码 UTF8 WideChar MultiByte Char 说明与区别

BIG5编码 GB编码(GB2312 GBK ...) Unicode编码 UTF8 WideChar MultiByte Char 说明与区别

时间:2021-03-06 15:37:47

相关推荐

BIG5编码  GB编码(GB2312  GBK  ...)  Unicode编码  UTF8  WideChar  MultiByte  Char 说明与区别



一. BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码

1.1. BIG5编码

BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个

1.2. GB编码

GB2312字集是简体字集, 全称为GB2312(80)字集, 共包括国标简体汉字6763个;

GB2312是中国规定的汉字编码, 也可以说是简体中文的字符集编码;

GBK包含全部中文字符;

GBK字集是简繁字集, 包括了GB字集, BIG5字集和一些符号, 共包括21003个字符;

GBK是GB2312的扩展, 除了兼容GB2312外, 它还能显示繁体中文, 还有日文的假名;

GBK标准, 他兼容GB2312标准, 同时在GB2312标准的基础上扩展了GB13000包含的字;

注意:

1. GBK字集是简繁字集, 包括了GB字集, BIG5字集和一些符号; 例如BIG5编码能够表示XX汉字, GBK编码也能够表示XX汉字, 但是XX汉字的BIG5编码与GBK编码是不同的.

2. GBK编码兼容GB2312编码, 例如GB2312编码能够表示YY汉字, 那么GBK编码也能够表示YY汉字, 而且YY汉字的GB2312编码与GBK编码是相同的.

3. 也就是说"包含"与"兼容"是两回事来的.

1.3. Unicode编码

Unicode也是一种字符编码方法, 由国际组织设计, 可以容纳全世界所有语言文字的编码方案. Unicode的学名是"UniversalMultiple-Octet Coded Character Set". 简称为UCS。UCS可以看作是"Unicode CharacterSet"的缩写

1.4. 说明

1. ASCII, GB2312, GBK到GB18030的编码方法是向下兼容的. 而Unicode只与ASCII兼容, 与GB码不兼容.

例如"汉"字的Unicode编码是6C49, 而GB码是BABA.

2. 一般来说, 如果在简体中文操作系统中使用的繁体字, 选GBK码繁体中文; 如果在繁体中文操作系统使用繁体字, 选Big5码繁体中文;

1.5. 个人理解

BIG5编码, GB编码, Unicode编码相当于一个并列关系, 就是说使用不同的编码方式表达相同的内容.

例如"汉"字的Unicode编码是6C49, 而GB码是BABA.

二. Unicode编码与UTF编码

Unicode编码只是规定如何编码, 例如"汉"字的Unicode编码是6C49, 那么如何把"汉"字保存到文件中, 你可以直接把6C49的数值保存, 你也可以吧6C49这4个字符来保存, 也就是说需要一种保存格式(一种格式协议). UTF-8, UTF-7, UTF-16就是被广泛接受的保存格式.

2.1 举例UTF-8编码

UTF-8编码分段范围:

编码范围 编码格式

A. 0000 - 007F0XXXXXXX

B. 0080 - 07FF110XXXXX 10XXXXXX

C. 0800 - FFFF1110XXXX 10XXXXXX 10XXXXXX

例如“汉”字的Unicode编码是6C49, 6C49在编码范围范围C之内, 所以使用编码格式C(1110xxxx 10xxxxxx 10xxxxxx). 将6C49写成二进制是:0110 110001 001001, 依次代替模板中的X,得到:11100110 10110001 10001001, 即E6 B1 89. 所以"汉"字的Unicode编码是6C49, UTF-8的编码是E6B189.

现在把"汉"字的UTF-8的编码保存在文本中, 程序知道这是UTF-8编码, 提取E6B189中的信息得到6C49, 因为6C49必然是Unicode编码, 所以知道这个是"汉"字.(因为这是一个格式协议, 程序就是按照这个格式协议来解析这个文件的).

2.2 UTF的一些说明

UTF是“Unicode Transformation Format”的缩写(UTF-8与ISO-8859-1完全兼容);

UTF-8则包含全世界所有国家需要用到的字符(因为Unicode);

UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示, 比如, 如果是UTF8编码, 则无需下载IE的中文语言支持包(相当于编码格式), 也可以在外国人的英文IE上也能显示中文(文字的显示只需要字体文件即可);

UTF-8的中文所占用的字节比使用GBK所占用的字节(UTF-8占用3字节, GBK占用2字节), 在html中, W3提倡用charset = "gbk", 而不是用charset = "gb2312";

2.3. 个人理解

1. UTF编码是针对Unicode编码的(例如2.1所说的例子), 所以如果GB编码与UTF编码互转, 需要通过Unicode编码做中间人.

2. Unicode编码, GB编码等就是对文字的编码规则, UTF编码是对Unicode编码的存储(传输)规则(不是对文字的编码规则).

3. 例如:

UFT8编码E6B189是对Unicode编码的, 那么对应的Unicode编码是6C49, 这个Unicode编码6C49代表中文的"汉"字;

假设UFT8编码E6B189是对GBK编码的, 那么对应的GBK编码也是6C49, 但是这个GBK编码6C49肯定不是代表中文的"汉"字, 而是其他文字;

三. WideChar, MultiByte, Char

WideChar: 宽字符, 两个字节为一个字符, 比如Unicode码, 这是全球统一编码的, 每个字符占2个字节

MultiByte: 多字节码, 一个字节或两个字节为一个字符(DBCS就这样)

Char: ANSI的单字符

MultiByte 以及 Char 这两个应该是兼容的, 可以认为MultiByte是对ANSI的一种扩充, 有时它是一个字符占一个字节, 有时是占两个字节.

各编码之间的互换请看: /bagboy_taobao_com/article/details/8594466

 

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。