C++ 如何使用Qt从文件中读取UTF-8文本?
我在从文件中读取UTF-8编码文本时遇到一些问题。我的版本只读取ASCII字符C++ 如何使用Qt从文件中读取UTF-8文本?,c++,qt,utf-8,filestream,C++,Qt,Utf 8,Filestream,我在从文件中读取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())
#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;
}
}
输出:
"jka si"
"limak"
"nieyca"
我应该使用什么?请参阅:
你应该做:
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
}
QTextStream在(&file)中;
in.setCodec(“UTF-8”);//将文件编解码器更改为UTF-8。
而(!in.atEnd())
{
QString line=in.readLine();
qDebug()在使用QXmlStreamReader
读取XML文件时,我也有?
。在读取文件之前,我通过调用此命令修复了此问题:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
我试过了,现在所有的非ASCII字符都被替换为“?”。也许你的qDebug输出控制台不支持这些字符。这可能是“?”的合理来源。试着在QLabel屏幕上显示字符串。这不是问题。dDebug()你确定你的输入文件实际上是UTF-8?4个文本编辑器(Geany、jEdit、gedit、Kate)假设它是UTF-8。我仍然对“?”有问题。在它之后,我得到:“j?ka?si?”“limak”“?nie?yca”您的默认语言环境是什么?IfqDebug()
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
}
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));