楼上说的很对了,那两个多出来的字节是因为在unicode编码中,还要指定字节序,就是字节的顺序,大于一个字节的数据在内存中存放的的顺序。有两种,大字节序BIG-ENDIAN和小字节序LITTLE-ENDIAN.
传输协议中,需要先传一个标识,一个叫“ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在Unicode中是不存在的字符,所以不应该出现在实际传输中。unicode规范建议在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样就多出了两个字节。
不信你换”ab“.getBytes()/length;输出就是6.还是多两位 |