您的位置:首页 > 其它

字符编码(四)ASCII,Unicode,UCS,UTF,字符&&字符编码集

2017-10-17 18:11 447 查看
1、理解                                                                                                 
       byte是唯一实现,真实的存在                                                                    

       char,int,short,是各种语义抽象(人,计算机对byte的语义分析,借用编译原理的概念)               

       String,Java由char组成,但最终还是以Bytes形式存在                                                 

                                                                                                        
2、ASCII字符集编码                                                                                      
    7位编码(最高位忽略无效),编码范围是0x00-0x7F。共128个字符(4位二进制==一位16进制)                
              0A  LF (NL line feed, new line) 换行键                                                    
              0D  CR (carriage return)  回车键(运输返回)                                              
              30 0                                                                                      
              41 A                                                                                      
              61  a                                                                                     
              <CR><LF>源自电传打字机Teletype,<CR>打字机把打印头定位在左边界, <LF>打字机把纸向下移一行。
              Unix 每行结尾"\n", Windows每行结尾"\r\n",分歧。                                           
                                                                                                        
3、Unicode(Universal code)                                                                              
       任何文字(char)在中都对应一个值(code point),代码值格式:U+ABCD                                    
       unicode 3.0: ISO/IEC 10646-1, support 49,259 chars, Basic Multilingual Plane(基本多文种平面)     
       Unicode 3.1:ISO/IEC 10646-2, support 94,205 chars, Supplementary Planes(定义的辅助平面)         
       UTF-8(1-4个字节)仅支持unicode3.0, 表示unicode3.0+,需要更多个字节?                               
       中日韩编码范围:4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)                             
                                                                                                        
3.1、UCS(Universal Character Set)                                                                       
       文字(char)和代码点之间的对应关系(抽象),没有规定如何存储(实现)                                   
       UCS-2(UCS coded in 2 octets)代码值范围U+0000~U+FFFF                                             
       UCS-4(UCS coded in 4 octets)代码值范围U+00000000~U+7FFFFFFF                                     
              U+7FFFFFFF = 2^7(最高位为0,group) * 2^8(plane面) * 2^8(row) * 2^8(cell码元)               
              BMP(Basic Multilingual多语言 Plane): group0,plane0 , BMP前2个字节全0,后两个字节对应UCS-2 
                                                                                                        
3.2、UTF(Unicode Transformation Format)                                                                 
       规定code point在计算机中如何存储                                                                 
       BOM: Byte Order Mark, 值:FEFF                                                                   
                                                                                                        
3.3、UFT-8, 用8bit作为最小单元,没有字节序问题,但仍然可以有BOM: EFBBBF                                 
       变长(1-4字节),兼容ASCII                                                                          
                                                                                                        
3.4、UTF-8映射unicode                                                                                   
       Unicode编码(16进制) ║ UTF-8 字节流(二进制)   有效bit数                                      
       000000 - 00007F ║ 0xxxxxxx   7bit//ASCII字母继续使用1字节储存                               
       000080 - 0007FF ║ 110xxxxx 10xxxxxx   11bits//希腊字母                                      
       000800 - 00FFFF ║ 1110xxxx 10xxxxxx 10xxxxxx   16bits//汉字等                               
       010000 - 10FFFF ║ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 22bits//辅助平面字符                    
       BOM: EFBBBF 推导                                                                                 
              FEFF(11111110,11111111)                                                                   
              转换规则: 1110xxxx 10xxxxxx 10xxxxxx                                                      
              EF,BB,BF(11101111, 10111011, 10111111)                                                    
                                                                                                        
3.5、UTF-16,用16bit作为最小单元,2个字节,必然有字节序问题                                             
       对 UCS-2 用2B直接保存。                                                                          
       对UCS-4 用4B直接保存                                                                             
       不兼容ASCII,固定长度,浪费资源,但速度快                                                         
       UTF-16LE-BOM: FF FE (windows默认)                                                                
       UTF-16BE-BOM: FE FF                                                                              
                                                                                                        
3.6、UTF-32 对应UCS-4 用4B直接保存,固定长度,浪费资源                                                  
                                                                                                        
3.7、实例:"汉字a\r\n"(unicode: U+6C49,U+5B57,U+0061,U+000D,U+000A),windows7下对应的各种编码。          
       ASCII                                                                                            
              BABAD7D6 610D0A                                                                           
       UTF-8(deflaut: 带BOM)                                                                            
              EFBBBF E6B189E5AD97 610D0A                                                                
       UTF-16                                                                                           
              FFFE 496C575B 61000D000A00                                                                
       UTF-16-big edn                                                                                   
              FEFF 6C495B57 0061000D000A                                                                
       Unicode-ascii escaped                                                                            
              \uFEFF\u6C49\u5B57a                                                                       
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐