如何使用Qt从文件中读取UTF-8文本
How to read UTF-8 text from file using Qt?
我从文件中读取UTF-8编码文本有一些问题。我的版本只能读取ASCII字符。
#include <QtCore>
int main()
{
QFile file("s.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
return -1;
}
QTextStream in(&file);
while(!in.atEnd())
{
QString line = in.readLine();
qDebug() << line;
}
}
s.txt:
jąkać się
ślimak
śnieżyca
输出:"jka si"
"limak"
"nieyca"
我应该用什么?
参见QTextStream::setCodec()
:
in.setCodec("UTF-8");
你应该这样做:
QTextStream in(&file);
in.setCodec("UTF-8"); // change the file codec to UTF-8.
while(!in.atEnd())
{
QString line = in.readLine();
qDebug() << line.toLocal8Bit(); // convert to locale multi-byte string
}
当读取QXmlStreamReader
的XML文件时,我也有????
。我通过在读取文件之前调用这个来修复它:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
相关文章:
- 读取UTF-8文件需要解析字符
- C++ UTF-8 瑞典语字符读取为 ASCII
- 如何使文件流以 UTF-8 C++读取
- C++读取和写入 UTF-32 文件
- 从C++文件中读取和打印 UTF-8 符号
- 如何在C++中读取 UTF-8 文件数据
- 如何在C 17中读取UTF-16文本文件
- 无法从Web服务器读取UTF-8缓冲区
- 有关读取 UTF-8 编码文本时 Ifstream get() 方法行为的说明 (C++)
- 从键盘读取 UTF-8 编码的字符
- 使用标准C++无线流读取UTF-8文本并转换为UTF-16
- 在 Mac 中使用C++读取 UTF-8 数据不起作用
- 如何以与字节序无关的方式读取 UTF-16 代码点的长度
- C++ 读取 UTF-8 文件正常,转换为 UTF-16 正常,写回文件不正常
- 使用ICU(ICU4C)读取UTF-8编码文件的缓冲区大小
- 不能在Qt中读取utf-8文件
- 按字节顺序读取UTF-16格式的文件到wstring
- 如何读取UTF-8编码与cpp-netlib时,没有指定在html头
- c++ fstream读取utf-8字符集
- 如何使用Qt从文件中读取UTF-8文本