先看一个代码
输出
4
1
1
首先unicode对字符是采用双字节存储 也就是这里 一个是 两个字节 !可能在开头或者结尾有种结尾符!!
为了在读取字节时能知道所采用的字节序,在传输时采用了一个名为
“ZERO WIDTH NON-BREAKING SPACE”(U+FEFF)的字符用于限定字节
序,开头两个字节为 FE FF 时为 Big-Endian,为 FF FE 时为 Little-Endian。
详见 RFC2781 3.2 节。
在 Java 中直接使用 Unicode 转码时会按照 UTF-16LE 的方式拆分,并加上 BOM。
如果采用 UTF-16 拆分,在 Java 中默认采用带有 BOM 的 UTF-16BE 拆分。
看这个连接 理解 rfc
[url]http://www.docin.com/p-6587198.html[/url]
String o="1";
System.out.println(o.getBytes("unicode").length);
System.out.println(o.getBytes("iso-8859-1").length);
System.out.println(o.getBytes("gbk").length);
输出
4
1
1
首先unicode对字符是采用双字节存储 也就是这里 一个是 两个字节 !可能在开头或者结尾有种结尾符!!
为了在读取字节时能知道所采用的字节序,在传输时采用了一个名为
“ZERO WIDTH NON-BREAKING SPACE”(U+FEFF)的字符用于限定字节
序,开头两个字节为 FE FF 时为 Big-Endian,为 FF FE 时为 Little-Endian。
详见 RFC2781 3.2 节。
在 Java 中直接使用 Unicode 转码时会按照 UTF-16LE 的方式拆分,并加上 BOM。
如果采用 UTF-16 拆分,在 Java 中默认采用带有 BOM 的 UTF-16BE 拆分。
看这个连接 理解 rfc
[url]http://www.docin.com/p-6587198.html[/url]