Unicode字符长度(以字节为单位) - 始终相同?

时间:2014-12-04 02:16:32

标签: java unicode

我将unicode字符定义为字节数组:

private static final byte[] UNICODE_MEXT_LINE = Charsets.UTF_8.encode("\u0085").array();

目前字节数组长度为3,是否可以安全地假设数组的长度在平台上始终为3?

谢谢

2 个答案:

答案 0 :(得分:3)

可以安全地假设特定的字符总是三个字节长,无论平台如何。

但是UTF-8中的unicode字符可以是一个字节,两个字节,三个字节甚至四个字节长,所以不,你不能假设如果你将任何字符转换为UTF-8那么它就是&#39 ; ll以三个字节出现。

答案 1 :(得分:1)

该特定字符的长度始终为3个字节,但其他字符将不同。 Unicode字符长度为1-4个字节。 'UTF-8'中的8表示它使用8位代码单位

Wikipedia page on UTF-8提供了很好的概述。基本上,第一个字节的前几位会告诉您字符长度的字节数。例如,如果第一个字节的第一个位是0中的01111111,那么这意味着该字符只有一个字节长(在utf-8中,这些是ascii字符)。如果110中的第一位是11011111,那么它会告诉您该字符长度为两个字节。维基百科页面中的图表很好地说明了这一点。

还有this question,它也有一些很好的答案。