【发布时间】:2011-03-05 16:58:06
【问题描述】:
我正在尝试在 Visual C 中读取一个只有一些数字的简单 unicode (UTF-16) 文本文件。这似乎是一项微不足道的任务,但我无法让它以正确的编码读取文件。
我的文件如下所示:
1337 42 23
由于是unicode,所以开头也有0xFF 0xFE BOM标记。
我尝试过wifstream() 和fwscanf(),但都被 BOM 卡住了,甚至在跳过 BOM 之后,这两个函数都只读取“1”(它们对 0x00 字符感到困惑,即它们不是实际上以 unicode 格式读取文件)。
所以,问题是,如何在 unicode Visual C++ 应用程序中读取和解析简单的 unicode 文件?
这是我的来源(fwscanf 版本):
int _tmain(int argc, _TCHAR* argv[])
{
int x;
FILE * f = _wfopen(L"bla.txt", L"r+");
if (!f) return -1;
fseek(f, 2, SEEK_SET); // skip the BOM mark
fwscanf(f, L"%d", &x);
wprintf(L"Number read: %d\n", x);
fclose(f);
return 0;
}
输出是:
Number read: 1
【问题讨论】:
标签: c++ visual-c++ file unicode utf-16