我将unicode字符定义为字节数组:
private static final byte[] UNICODE_MEXT_LINE = Charsets.UTF_8.encode("\u0085").array();
目前字节数组长度为3,是否可以安全地假设数组的长度在平台上始终为3?
谢谢
答案 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,它也有一些很好的答案。