计算机字符编码那点事
2019-10-30 13:26:11 0 举报
AI智能生成
详细阐述计算机字符编码
作者其他创作
大纲/内容
基本概念
字符集:一个系统支持的所有抽象字符的集合;ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集
字符编码:将符号转换为计算机可以接受的数字系统的数的规则
ASCII字符集+字符编码
占用了一个字节的后面7位,最前面的一位统一规定为0;一共规定了128个字符的编码(英语)
扩展ASCII:将最前面一位利用起来,置为1,可以表示256个符号(非英语表音语种);0--127表示的符号是一样的,不一样的只是128--255的这一段
Unicode字符集
全世界所有符号均分配唯一编码;可容纳100万符号
查询方式:unicode.org
只规定符号对应的二进制代码,并未规定如何存储
UTF-8:Unicode 的实现方式之一
一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
对于单字节的符号:字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的;
对于n字节的符号(n > 1):第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码
字节序
这两个古怪的名称来自英国作家斯威夫特的《格列佛游记》。在该书中,小人国里爆发了内战,战争起因是人们争论,吃鸡蛋时究竟是从大头(Big-endian)敲开还是从小头(Little-endian)敲开。为了这件事情,前后爆发了六次战争,一个皇帝送了命,另一个皇帝丢了王位
大端序:高字节在低位,低字节在高位
小端序:低字节在低位,高字节在高位
以汉字严为例,Unicode 码是4E25,需要用两个字节存储,一个字节是4E,另一个字节是25。存储的时候,4E在前,25在后,这就是 Big endian 方式;25在前,4E在后,这是 Little endian 方式。
如何知道文件的大端小端方式?Unicode 规范定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做"零宽度非换行空格"(zero width no-break space),用FEFF表示。这正好是两个字节,而且FF比FE大1。
如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。
如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。
中文字符集和编码
天朝专家的决定
GB2312/GB2312-80收录6763个常用汉字
小于127的字符的意义与原来相同(半角字符)
两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE(全角字符)
GB 18030
与GB 2312-1980完全兼容,与GBK基本兼容,支持GB 13000及Unicode的全部统一汉字,共收录汉字70244个。
与UTF-8相同,采用多字节编码,每个字可以由1个、2个或4个字节组成
编码空间庞大,最多可定义161万个字符
支持中国国内少数民族的文字,不需要动用造字区
汉字收录范围包含繁体汉字以及日韩汉字
Big5繁体字
Big5码是一套双字节字符集,使用了双八码存储方法,以两个字节来安放一个字。第一个字节称为"高位字节",第二个字节称为"低位字节"。"高位字节"使用了0x81-0xFE,"低位字节"使用了0x40-0x7E,及0xA1-0xFE。
字符集和编码之间的关系小结
Unicode、GBK和Big5码等就是编码的值(也就是术语“字符集”)
UTF-8、UTF-16、UTF32之类就是这个值的表现形式(即术语“编码格式”)
GBK、GB2312等与UTF8之间转换关系
GBK、GB2312 --先转--> Unicode --再转--> UTF8
UTF8 --先转--> Unicode --再转--> GBK、GB2312
UTF8完全只针对Unicode来组织
0 条评论
下一页