很抱歉这个令人困惑的标题,我不确定如何自己说出来。我会尽量让问题保持简单。
我正在研究一个保持"目录"字符串。此目录只是一个以特定方式编制索引的简单平面文本文件。文件的语法必须是ASCII,但字符串的内容可以是UTF8。
文件示例:
{
STRINGS: {
THISHASTOBEASCII: "But this is UTF8"
HELLO1: "Hello, world"
HELLO2: "您好"
}
}
读取UTF8文件并不是问题所在,我不太关心引号之间的内容,因为它只是简单地复制到其他地方,没有对其进行任何更改字符串。
问题是我需要解析括号和字符串的标签,以便将UTF8字符串正确存储在内存中。我该怎么做?
编辑:刚刚意识到我过度复杂了。我应该复制并存储两者之间的任何内容,因为UTF8可以读入字节> _<。标记为结束。
答案 0 :(得分:2)
您可以使用您提到的UTF-8处理方法进行此操作。
实际上,一个字节的UTF-8字符也遵循ASCII规则。
1字节UTF-8类似于0XXXXXXX。更多字节UTF-8。总字节数以1开头,后跟零,然后其他字节以10开头。
像3字节一样:1110XXXX 10XXXXXX 10XXXXXX
5字节:111110XX 10XXXXXX 10XXXXXX 10XXXXXX 10XXXXXX 10XXXXXX
当您浏览字符数组时,只需检查您阅读的每个字符。您将知道它是ASCII(通过& 0x80得到假)还是多字节字符的一部分(通过& 0x80得到)
注意:所有unicode都是3字节的UTF-8。 Unicode当前使用2个有效字节(16位),3字节UTF-8也是16个valit位。(参见上面列出的' X')
答案 1 :(得分:1)
ASCII是UTF-8的子集,UTF-8可以使用标准的8位字符串解析函数进行处理。因此整个文件可以作为UTF-8处理。只需剥掉你不需要的部分。