【发布时间】:2010-02-14 07:37:00
【问题描述】:
这是程序:http://codepad.org/eyxunHot
文件的编码是 UTF-8。
我有一个名为“config.ini”的文本文件,其中包含以下单词: ➑球
如果我使用记事本以“UTF-8”编码保存文件,然后运行程序,根据调试器,八球的值为: âball
如果我使用记事本以“Unicode”编码保存文件,然后运行程序,根据调试器,八球的值为: ÿþ'b
如果我使用记事本以“Unicode big endian”编码保存文件,然后运行程序,根据调试器,八球的值为: þÿ'
在所有这些情况下,结果都是不正确的。 ANSI 编码也不支持 ➑ 符号。无论编码如何,如何确保当我转到 config_file >> Eight_ball 时会从文件中提取单词 ➑ball?无论 config.ini 的编码如何,我都希望这个程序的输出是“程序正确”。
【问题讨论】:
-
请注意,您的问题根本无法解决。如果我保存内容为“âball”(8 个有效字符)的 Latin-1 文件,则无法将其与包含 ➑ball(5 个有效字符)的 UTF-8 文件区分开来。它们是相同的 8 个字节。
标签: c++ boost encoding utf-8 locale