【发布时间】:2018-06-14 18:22:46
【问题描述】:
有一个 C++ 程序,我需要添加读取文件的功能。 我发现它不适用于欧洲特殊字符。我正在使用的示例是瑞典语字符。
我将代码更改为使用宽字符,但这似乎没有帮助。
我正在阅读的示例文本文件具有以下内容:
"NEW-DATA"="Nysted Vi prøver lige igen"
这是在 Windows 上,Nodepad 说这个文件使用 UTF-8 编码。
在 Visual Studio 中,调试时,读取的字符串显示为 ASCII 格式:
"NEW-DATA"="Nysted Vi prøver lige igen"
我更改了代码以使用“宽”方法:
std::wifstream infile;
infile.open(argv[3], std::wifstream::in);
if (infile.is_open())
{
std::wstring line;
while (std::getline(infile, line))
{
....
我还需要做些什么来让它正确识别 UTF-8?
【问题讨论】:
-
离题,但这不是瑞典语,而是丹麦语。瑞典语不使用“ø”。
-
BTW - 该文件有一个 BOM(显示为“”)。 BOM 是不属于文件文本内容的元数据。因此,不应允许它以
line结尾。请参阅此BOM test andputbackexample。 (BOM 可能是记事本曾经提出 UTF-8 作为编码的猜测的一部分。如果您不喜欢猜测,请询问发件人使用了哪种编码。同意 UTF- 可能是个好主意8,因此您每次打开来自同一来源的任何文本文件的任何版本时都可以依赖它。)