程序如何读取unicode?

时间:2011-10-11 16:56:10

标签: java unicode

Unicode代码单元可以是可变大小的,因为字符可以用2个字节或更多字节(2个字节的序列)表示。因此,如果以二进制格式存储,程序如何知道如何读回它们?

假设'a'由0F0F 13F3表示,'b'由02AD BC39 09F3 459F表示

如果我把它们写在文件foo.txt中:

0F0F 13F3 02AD BC39 09F3 459F

然后我怎么知道在哪里停下来'a'和'b'?

伙计们我在这里谈论阅读,编写纯粹的unicode,即不将其转换为基于流行字符集(如utf-8)的任何其他格式。

2 个答案:

答案 0 :(得分:3)

首先,并非所有Unicode表示都是可变长度。 UTF-32和USC-2是固定长度的。 UTF-8和UTF-16各自都有自己的可变长度。

其次,如果您阅读规范,您将了解序列是自描述的。可以是第一个字节的字节值(以UTF-8表示)不能是第二个或第三个等等。同样,代表UTF-16中非BMP字符的代理对。

答案 1 :(得分:2)

常用的编码是UTF-8。它的结构方式是字符字节的一些预定义位告诉你是否还有更多的字节。

请参阅http://en.wikipedia.org/wiki/UTF-8#Design了解一个漂亮的图表。