holderjava
这二者只是存储顺序不一样,如"A"的unicode编码为65 00 ,BigEndianUnicode编码为00 65算法
注: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