通过非unicode代码读取UTF-8 Unicode文件

时间:2009-07-30 05:57:57

标签: c++ unicode utf-8 text-files

我必须读取一个带有UTF-8编码的Unicode文本文件,并且必须将此数据写入另一个文本文件。该文件以行标签分隔数据。

我的阅读代码是没有unicode支持的C ++代码。我正在做的是在string/char*中逐行读取文件并将该字符串按原样放入目标文件。我无法更改代码,因此不欢迎代码更改建议。

我想知道的是,逐行读取时,我会遇到一行中的NULL终止字符('\ 0'),因为它是unicode,一个字符可以跨越多个字节。

我的想法是很可能在一行中遇到一个NULL终止字符。你的想法?

2 个答案:

答案 0 :(得分:13)

UTF-8对所有ASCII字符使用1个字节,其代码值与标准ASCII编码相同,其他字符最多4个字节。每个字节的高位保留为控制位。对于使用超过1个字节的代码点,设置控制位。

因此,您的UTF-8文件中不得有0个字符。

检查Wikipedia for UTF-8

答案 1 :(得分:1)

非常不可能:UTF-8转义序列中的所有字节都将较高位设置为1.