如何使用Qt从文件中读取UTF-8文本?

时间:2011-04-12 03:33:31

标签: 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())
    {
        QString line = in.readLine();
        qDebug() << line;
    }
}

s.txt:

jąkać się
ślimak
śnieżyca

输出:

"jka si" 
"limak" 
"nieyca"

我应该使用什么?

3 个答案:

答案 0 :(得分:20)

请参阅QTextStream::setCodec()

in.setCodec("UTF-8");

答案 1 :(得分:6)

你应该这样做:

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 
}

答案 2 :(得分:1)

使用fileTree()阅读XML文件时,我也有files()。我在阅读文件之前通过调用它来修复它:

????