如何在c++中读取西里尔字母Unicode文件
How to read Cyrillic Unicode file in C++?
我正试图从.txt文件中读取行,已保存为Unicode。我就是这么做的:
wifstream input;
string path = "test.txt";
input.imbue(locale(input.getloc(),
new codecvt_utf16<wchar_t, 0x10ffff, consume_header>));
input.open(path);
if (input.is_open())
{
wstring line;
input.seekg( 1 , ios_base::beg);
getline(input, line);
}
对于带有拉丁字符的文件可以正常工作。但是对于西里尔字母文件,我得到的是奇怪的符号,而不是空格和相邻字符。
例如:输入文件中的内容:
Госдеп США осудил нападение на
结果:
︓осдепР!ШАР>судилР=ападениеР=а
我做错了什么?
代码中有一行看起来很可疑:
input.seekg(1, ios_base::beg);
设置文件位置,因此读取utf16字符串的起始位置1可能不正确(BOM被错误读取)。对于小端进的utf16文件,我有相同的结果。
所以你可以改变位置为0或删除这一行,以使这段代码工作
我知道了:
FILE *input= _wfopen(L"test.txt", L"rb");
wchar_t line[1000];
test.txtfgetws(line, 1000, input);
这样就可以了。我不先试一试真是太傻了。谢谢大家
相关文章:
- 在特定 Unicode 路径中创建文件
- 如何存储 unicode 字符并将其输出到文件?
- C++如何通过忽略每行的第一个字符来读取 unicode 文件
- C++:如何将 unicode 字符打印到文本文件
- Linux Ubuntu 中的文件内输出 unicode 符号
- 使用 Imread 打开具有 Unicode 名称的图像文件
- 将 Unicode 字符/字符串写入文件
- 将 Unicode 字符存储在.txt文件中的新行中
- 读取 CSV 文件(UNICODE 编码)C++时出现编码错误
- 无法将 Unicode(希腊语)字符保存到文件中
- 如何在 c++ 中调用 unicode 函数 CreateProcessW 来启动 Windows 可执行文件
- 无法读取使用Unicode的文件(存在)
- 如何将 unicode 文本打印到输出文件?
- 从包含Unicode字符的文件中读取
- 使用C++的可视 Unicode 文件函数
- C/C++ 将编码设置为 UNICODE。如何将'ă'写入文件
- 删除用户 Temp 目录中的文件夹,但也要考虑 unicode 文件夹名称
- 为什么getline正在读取我的整个unicode文件
- 使用std::wifstream读取带有特殊字符的unicode文件
- 如何在c++中读取西里尔字母Unicode文件