【发布时间】:2013-02-08 23:22:12
【问题描述】:
我有 UTF-8 编码的文本文件。我可以按字符阅读。每个 char 可以是一个字节或多字节。我怎样才能知道在哪里读取了一个字节以及读取了多个字节?
【问题讨论】:
我有 UTF-8 编码的文本文件。我可以按字符阅读。每个 char 可以是一个字节或多字节。我怎样才能知道在哪里读取了一个字节以及读取了多个字节?
【问题讨论】:
在读取chars 时计算字节数。
对于每个char c:
if(c<128)
bytesCount++;
else if (c<2048)
bytesCount+=2;
else
bytesCount+=3;
另见编码定义wikipedia URF8
【讨论】:
char 值),低编号字符可以用长字节序列而不是通常的短的。
U+10FFFF 结尾,以匹配 UTF-16 字符编码的约束。这删除了所有 5 字节和 6 字节序列,以及大约一半的 4 字节序列。