我需要读取包含任意 MBCS 编码字符串的文本文件。文件格式(简化)如下:
CODEPAGE "STRING"
CODEPAGE STRING
...
其中 CODEPAGE 可以是任何 MBCS 代码页:UTF-8、cp1251(西里尔文)、cp932(日语)等。
我无法在一次调用 MultiByteToWideChar 时解码整个文件。我需要提取引号之间的字符串,或者直到空格或回车符,然后在提取的字符串上调用 MultiByteToWideChar。
但是在 MBCS(多字节编码方案)中,一个字符可以用多个字节表示。如果我想在多字节编码文件中找到拉丁语“A”,我不能只搜索代码 65,因为 65 可能是某些编码序列中的尾随字节。
所以我不确定是否允许在 MBCS 字符串中搜索 '"' 或空格或 CR。我浏览了几个代码页(例如中文 936 代码页:https ://ssl.icu-project.org/icu- bin/convexp?conv=windows-936-2000&s=ALL),据我所知,所有尾随字节都从 0x40 开始,因此扫描文件中的标点符号是安全的。但是对于任何代码页,是否有一些保证?