您的位置:首页 > 其它

ascii码 iso 8859-1 Unicode 字符编码 UTF8编码 区别 表格

2017-04-29 20:43 525 查看
第一:编码简单描述

      一、ASCII码:美国佬最初把自己的语言用计算表示,发现 0--127  能把字母表+其它符号全能表示出来

     二、  iso 8859-1:欧洲人,0---127 是ASCII码,128--255 加了一些特殊符号

    三、Unicode :就是设计出全世界语言即对应编码,就像编了一本大汉语字典。

                    定义地址范围,两个字节(16个2进制位)  

                    所以查汉字,首先查Unicode 表,得出 基本编码。

        现在编出来,哪么计算机到底如何存储这些编码,用几个字节呢!

          对Unicode 编码进行加工。

      1、出现 UTF-16    little endian(有无BOM) ,Big
endian(有无BOM)。

 
         对Unicode  两个字节的编码增加字节存放数或存放位置进行调整。

           1>>然后根据两个字节有高低,存放的地址有高低,高低字节如何存---出现 little endian ,Big
endian         

          2>>  Bom 区分UTF-8 EF BB BF,

              UTF-16 FF
FE                    

           little endian(车尾压力小):重要的放在高地址,即低字节高地址,高字节低地址,低高高低。         

           Big endian(车尾压力大):  重要的放在低地址 。即低字节低地址,高字节高地址 ,低低高高。                               

    2、UTF-8:解决Unicode 存贮ASCII浪费空间的问题,

              编码规则: UTF-8(目前常用是把2个字节按地址分成三个区间,然后按照规则编写编码),UTF-32。

            如 :1》对于ASCII码来说  1》一个旅馆一层楼就能住满客人,0---127 个小房间。

                                         2》这下好,你增加一层楼,但是还是只住 同样数量的客人

                       **所以 Unicode 对于ASCII码在存贮到内存或硬盘,浪费一半的空间。

                 2》对汉字好像没影响,反正都是存贮 2个字节。

                3》对于部分欧洲人来说,0---255 (一个字节)够了,也是浪费存贮空间。

  所以出现 UTF-8

        如果保存UTF-8文件内容:

            第一:如果保存的字母在ASCII里,就直接存放ASCII的二进制,一个字节

            第二:如果是汉字,哪么查找UNICODE表,看地址规定在UTF-8的那个地址范围内,就用几字节存。 

  **总结:ASCII存贮是省空间,但是其它中文,明明以前只要16位(2字节)现在有可能要三个字节表示。

四、GBK:用俩字节

       第一字节:从129 开始往下编 0x81。

       第二字节:从64---255 编码,即这8位是0100 0000----1111 1111   

       

第二:例子

             例如: 文本文件可保存的编码:

                   1、ASCII

                   2、UTF-16 little endian 有bom,UTF-16 little endian 无bom,

                       UTF-16 Big endian 有bom,UTF-16 Big
endian 无bom,

                   3、UTF-8 有bom,UTF-8 无bom

         例如: 

                  严1a :gbk 0xD1 CF 31 61

                 严1a :unicode  0x4E25 31 61

                   1>查找unicode 代码过程 严 ----在网页:http://www.sojson.com/unicode.html 查Unicode得 10进制 #20005;

       20005(十进制) = 100 1110 0010 0101(二进制)0x4E25

                  1:#49    49(十进制) = 110001(二进制)  0x31

                  a:#97       97(十进制) = 1100001(二进制) 0x61                 

                  2》查找 gbk         1:ASCII 表  0x31         a:ASCII 表  0x61    3.

                         严 --  http://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php 对应的代码 D1 CF

    
                  网络传输(TCP/IP):大尾(Big endian)即低字节低地址,高字节高地址 ,低低高高。  

            1.ASCII编码文件

                D1 CF 31 61                

              保存: 1>对于0---127
的编码,就保存相应的ASCII码。

                        2>对于汉字编码就保存128 开始的两个字节里。 
                      

                          所以传给别人,非常方便区分。

                        ****反正一个字节一个字节取,哪么当读到第一位是0,判断是ASCII码,读一个字节。 
  

                       当读到第一位是1,判断是G BK码,因此连续读两个字节(从高地址往地址读)。 
    

            2、Unicode编码 :4E 25 0031
0061

                  little
endian:每一个16位(2个字节),都是高字节低地址,低字节高地址。

 
                            例如 完整 一个16位:4E25(4E 高字节,25 低字节) 存放 反过来25
4E。每一个16位全部这样存放。

               1>UTF-16 little endian 无bom 
            25 4E 31 00 61 00    (6个字节)

               2> UTF-16 Big
endian 无bom         00 25 00 4E 00 31 00 00 00 61 00 00  (12个字节)

 
            3>UTF-16 little endian
有bom      FF FE 25 4E 31 00 61 00  (8个字节)

              4>UTF-16 Big endian 有bom      FF
FE 00 25 00 4E 00 31 00 00 00 61 00 00 (14个字节)

 
          

           3、 UTF-8             

             1>UTF-8 (默认有Bom)    EF BB BF E4 B8 A5 31 61  (8个字节)

                   

             2>UTF-8  无Bom                            E4 B8 A5 31 61  (5个字节)                         

 

                                                       ASCII码表

BinDecHex缩写/字符解释
00000000000NUL(null)空字符
00000001101SOH(start of headling)标题开始
00000010202STX (start of text)正文开始
00000011303ETX (end of text)正文结束
00000100404EOT (end of transmission)传输结束
00000101505ENQ (enquiry)请求
00000110606ACK (acknowledge)收到通知
00000111707BEL (bell)响铃
00001000808BS (backspace)退格
00001001909HT (horizontal tab)水平制表符
00001010100ALF (NL line feed, new line)换行键
00001011110BVT (vertical tab)垂直制表符
00001100120CFF (NP form feed, new page)换页键
00001101130DCR (carriage return)回车键
00001110140ESO (shift out)不用切换
00001111150FSI (shift in)启用切换
000100001610DLE (data link escape)数据链路转义
000100011711DC1 (device control 1)设备控制1
000100101812DC2 (device control 2)设备控制2
000100111913DC3 (device control 3)设备控制3
000101002014DC4 (device control 4)设备控制4
000101012115NAK (negative acknowledge)拒绝接收
000101102216SYN (synchronous idle)同步空闲
000101112317ETB (end of trans. block)传输块结束
000110002418CAN (cancel)取消
000110012519EM (end of medium)介质中断
00011010261ASUB (substitute)替补
00011011271BESC (escape)溢出
00011100281CFS (file separator)文件分割符
00011101291DGS (group separator)分组符
00011110301ERS (record separator)记录分离符
00011111311FUS (unit separator)单元分隔符
001000003220(space)空格
001000013321! 
001000103422" 
001000113523# 
001001003624$ 
001001013725% 
001001103826& 
001001113927' 
001010004028( 
001010014129) 
00101010422A* 
00101011432B+ 
00101100442C, 
00101101452D- 
00101110462E. 
00101111472F/ 
0011000048300 
0011000149311 
0011001050322 
0011001151333 
0011010052344 
0011010153355 
0011011054366 
0011011155377 
0011100056388 
0011100157399 
00111010583A: 
00111011593B; 
00111100603C<< td=""> 
00111101613D= 
00111110623E> 
00111111633F? 
010000006440@ 
010000016541A 
010000106642B 
010000116743C 
010001006844D 
010001016945E 
010001107046F 
010001117147G 
010010007248H 
010010017349I 
01001010744AJ 
01001011754BK 
01001100764CL 
01001101774DM 
01001110784EN 
01001111794FO 
010100008050P 
010100018151Q 
010100108252R 
010100118353S 
010101008454T 
010101018555U 
010101108656V 
010101118757W 
010110008858X 
010110018959Y 
01011010905AZ 
01011011915B[ 
01011100925C\ 
01011101935D] 
01011110945E^ 
01011111955F_ 
011000009660` 
011000019761a 
011000109862b 
011000119963c 
0110010010064d 
0110010110165e 
0110011010266f 
0110011110367g 
0110100010468h 
0110100110569i 
011010101066Aj 
011010111076Bk 
011011001086Cl 
011011011096Dm 
011011101106En 
011011111116Fo 
0111000011270p 
0111000111371q 
0111001011472r 
0111001111573s 
0111010011674t 
0111010111775u 
0111011011876v 
0111011111977w 
0111100012078x 
0111100112179y 
011110101227Az 
011110111237B{ 
011111001247C| 
011111011257D} 
011111101267E~ 
011111111277FDEL (delete)
                                                                     iso 8859-1



  Unicode符号范围   | UTF-8编码方式
  (十六进制)       |       (二进制)
--------------------+---------------------------------------------
  0x0000---0x007F
| 0xxxxxxx
  0x0080---0x07ff | 110xxxxx 10xxxxxx
  0x0800---0xffff | 1110xxxx 10xxxxxx 10xxxxxx

上表,解读UTF-8编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。

下面,还是以汉字"严"为例,演示如何实现UTF-8编码。

已知"严"的unicode是4E25(0100 1110 0010 0101)

 根据上表,可以发现4E25处在第三行的范围内(0000 1000 0000 0000-1111 1111 1111 1111),因此"严"的UTF-8编码需要三个字节,即格式是"1110xxxx 10xxxxxx 10xxxxxx"。然后,从"严"的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,"严"的UTF-8编码是"11100100 10111000 10100101",转换成十六进制就是E4B8A5。

参考文章: 

         ASCII码表

      【1】http://www.fmddlmyy.cn/text16.html

            Unicode 字符编码表 
    

       【2】http://www.cnblogs.com/chenwenbiao/archive/2011/08/17/2142718.html

       【3】http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

          utf-8和utf-16.

       【4】http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html

           gbk编码

      【5】 http://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php
     UTF-8(目前常用是把2个字节按地址分成三个区间,然后按照规则编写编码),UTF-32。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ascii码 iso 8859-1 U
相关文章推荐