百科狗-知识改变命运!
--

GBK内码 Unicode码 区位码有什么区别和联系 怎样互相转化

梵高1年前 (2023-12-05)阅读数 7#综合百科
文章标签字节汉字

ANSI , 这是美国国家标准协会制定的编码格式,例如"A汉" 在这种编码方式下的内存值为 41 BA BA ,'A'占用一个字节,"汉"用两个字节,而且 BA BA 正式 GBK内码的值, 那让我们先认识GBK编码. GB2312,GBK,GB18030都是中国人自己发明的(中国之外并不使用的), 他们出现的时间顺序是GB2312 -> GBK -> GB18030 ,他们是包含关系,GB我猜是 "国标" 的意思 "k" 可能是 "扩展", 这些编码都是书面协议,要在计算机内部表示所以GB2312的内存值须在原来的每个字节值(区位码)上加0x80得到机内码,加上0x80是为了使得每个字节的最高位为1,这样就可以在内存中区分汉字和ASCII了[因为ASCII的最高位都为0]. 但是后来要在GB2312上扩展(得到GBK,GB18030),就需要更多的编码空间,所以GBK,GB18030就没有要求第二个字节的的最高位为1了,而是通过第一个字节来判断这是一个字节的ASCII还是两个字节的GBK.另外需要说明一点GB2312,GBK,GB18030是向下兼容的,例如 "汉" 在GB2312,GBK,GB18030中都是BA,BA . 另外,GB2312,GBK并没有因为GB18030的出现退出市场,在一些嵌入式设备中还是应用广泛的,因为减少字库容量可以大大减少成本. 回到之前的ANSI, 我们大概知道了GBK(不知道人们为什么喜欢用GBK而不是GB18030,姑且认为是GBK只有3个字母,书写方便吧!),那么ANSI又是怎么回事呢? ANSI就像一个指针,本身没有内容,如果指向"中国的编码",那么它就是GBK,如果指向"印度的编码",他就是xx.也就是说在中国ANSI是GBK,在日本ANSI是XXX,在印度ANSI是?,但是他们在windows的记事本中都只能看到ANSI.但是ANSI也做了一些小的变动,就像刚才一样,'A'在内存中只占用了一个字节,也就是说ANSI = ASCII + 本地编码Unicode: 但是,我们怎么在一个汉语资料中书写日文符号呢?这时,Unicode出现了,不过它是谁发明的,反正Unicode把世界上的所有文字符号都包含进来了,不仅解决了刚才说的问题,而且程序员用Unicode写的程序可以在全世界的电脑上运行.C语言中用wchar_t表示.UCS: 据说UCS是和Unicode一样的工程,最后两个工程达成共识,所以编码完全兼容.所以我就把UCS看做Unicode. 这里的UCS-2就是常说的UCS,只使用了两个字节保存一个字符,而UCS-4则是使用4个字节保存一个字符.UTF-8: (ucs transformation format),为什么要创造UTF-8呢?其中一个原因是:0x00在C语言及操作系统文件名(等..)中有特殊意义(如字符串结尾),然而按照Unicode编码的话,很可能这个字符的第一个字节(高字节)为非零数值,而低字节为零,这样C语言就会误认为这是字符串的结尾.所以UTF-8的一个功能是保证Unicode编码表中不出现0x00(当然正常的0x00是可以的)UCS-2编码,Unicode(16进制) UTF-8 字节流(二进制)

0000 - 007F 0xxxxxxx

0080 - 07FF 110xxxxx 10xxxxxx (第一个1之后有几个1就表示后面还有一个字节,这里后面还有1个)

0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (第一个1之后有几个1就表示后面还有一个字节,这里后面还有2个) 应为UTF-8的这种编码方式,它不需要判断大小端模式,所以它是利于网路传输的(我也不知道是为什么) (BOM) EF BB BF ,我们可以通过BOM来判断文本是否为UTF-8编码格式.打开一个文本文件时如何判断是何种编码呢?1)提示用户选择编码类型2)根据一定的规则猜测编码类型3)检测文件头标识识别编码类型

EF BB BF    UTF-8

GBK内码 Unicode码 区位码有什么区别和联系 怎样互相转化

FE FF      UTF-16/UCS-2(Unicode), little endian,(在文件一个只含一个字母'A'的中文件中,文件内容为 FE FF 00 41 )

FF FE      UTF-16/UCS-2(Unicode), big endian,(在文件一个只含一个字母'A'的中文件中,文件内容为 FF FE 41 00 )

FF FE 00 00   UTF-32/UCS-4, little endian.

00 00 FE FF   UTF-32/UCS-4, big-endian. 区位码 国标(GBK) 内码 "汉" 1A1A 3A3A BABA 国标 = 区位码 + 0x20 (每个字节) 内码 = 国标(GBK) + 0x80 (每个字节)

分类: 电脑/网络 >> 软件 >> 其他软件

解析:

G B2312编码大约包含6000多汉字(不包括特殊字符),编码范围为第一位b0-f7,第二位编码范围为a1-fe(第一位为cf时,第二位为a1 -d3),计算一下汉字个数为6762个汉字。当然还有其他的字符。包括控制键和其他字符大约7573个字符编码gbk编码是对G B2312编码的扩充,容纳的汉字更多,但仅仅是扩充,没有质的变化。保留了所有G B2312编码,在此基础上进行编码范围的扩充.容纳(包含特殊字符)共22014个字符编码.gb18030编码是在gbk编码基础上的扩充,因为汉字更多,仅仅使用两位编码已经不能容纳要求的汉字,所以采用了2\4位混和的办法,可以支持更多的汉字编码。并且保留了原有的gbk 2字节编码兼容G B2312和gbk编码的文件。大概容纳55657个编码(包含特殊字符)unicode 编码(也就是UTF编码):俗称万国码,致力于使用统一的编码准则表达各国的文字。为表达更多的文字,utf-8采用2/3混编的方式。目前容纳的汉字范围小于gbk编码。并且以3字节的方式处理中文,带来了兼容性的问题,原有的gbk,G B2312,gb18030编码文件都不能正常的处理,还有很长的路要走。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)