[Qt-interest] How to translate GB18030 to Utf-8?

Kermit Mei kermit.mei at gmail.com
Tue Aug 17 10:24:14 CEST 2010


Dear all, my code is as the following.

    The file src.txt is an GB18030 format file, and I want to translate
its content into UTF-8 to show on Linux. The result is write into the
file dstFile. But the result is some bad code if there's some Chinese
characters in the src.txt.

     Is there something wrong?

#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <QPainter>
#include <QTextCodec>


void transLateGBtoUTF8()
{
    QTextCodec *m_srcCodec = QTextCodec::codecForName("GB18030-0");
    QTextCodec *m_dstCodec = QTextCodec::codecForName("UTF-8");

    QFile srcFile("./src.txt");
    srcFile.open(QIODevice::ReadOnly|QFile::Text);

    QString tmpStr;

    QTextStream in, out;
    in.setDevice(&srcFile);
    in.setAutoDetectUnicode(false);
    in.setCodec(m_srcCodec);

    tmpStr = in.readAll();

    QFile dstFile("./des.txt");
    dstFile.open(QFile::WriteOnly|QIODevice::Truncate|QFile::Text);

    out.setDevice(&dstFile);
    out.setCodec(m_dstCodec);
    out << tmpStr;
    srcFile.close();
    dstFile.close();
}


int main(int argc, char *argv[])
{
    QApplication app(argc,argv);
    transLateGBtoUTF8();
    return 0;
}


Thanks
B.R
Kermit






More information about the Qt-interest-old mailing list