Unicode 与 UTF-8 编码对应规则

holderjava


Unicode和BigEndianUnicode 区别


    这二者只是存储顺序不一样,如"A"的unicode编码为65 00 ,BigEndianUnicode编码为00 65算法

UTF-8

    注:UTF(UCS Transformation Format):UCS只是规则的如何编码,可是没有规则如何传输、保管这个编码。UTF则规则了由几个字节保管这个编码。    这是为传输而设计的编码,其系列还有UTF-7和UTF-16 以及 UTF-32网络


    其中UTF-16和Unicode编码大体同样, UTF-8就是以8位为单元对Unicode进行编码。从Unicode到UTF-8的编码方式以下: 
     Unicode编码(16进制)      UTF-8 字节流(二进制) 
     0000 - 007F         0xxxxxxx 
     0080 - 07FF         110xxxxx 10xxxxxx 
     0800 - FFFF         1110xxxx 10xxxxxx 10xxxxxx编码

  例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,因此确定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,用这个比特流依次代替模板中的x,获得:11100110 10110001 10001001,即E6 B1 89。url


能够查看java.io.DataInputStream的readUTF方法的具体实现算法。spa


另外 百度百科里讲的很详细设计


编码转换:code

加入咱们从网络收到一个unicode 编码值 x, 可是当前的设备不支持 Unicode 字符集(因此不知道这个x对应的什么符号),只支持gb2312, 那么咱们须要经过 unicode编码表 和 gb2312编码表 找到 x 对应的gb2312编码值,而后就能够找到对应的符号 orm

相关文章
相关标签/搜索