Я пытаюсь прочитать простой текстовый файл Unicode (UTF-16) с несколькими цифрами в Visual C. Это казалось тривиальной задачей, но я не могу заставить его прочитать файл в правильной кодировке.
Мой файл выглядит следующим образом:
1337 42 23
Поскольку он в кодировке Unicode, он также имеет метку 0xFF 0xFE в начале.
Я пробовал wifstream()
иfwscanf()
, но оба застревают в спецификации, и даже после пропуска спецификации обе функции читают только «1» (они путаются с символом 0x00, то есть фактически не читают файл как юникод).
Итак, вопрос в том, как вы читаете и анализируете простой файл Unicode в Unicode приложении Visual C ++?
Вот мой источник (версия 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