计算机字符编码那点事
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 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
  
  
 