在Qt中读取Windows编码文件

时间:2016-12-06 17:47:39

标签: c++ qt unicode utf-8

我一直在努力争取从Windows编码文件中正确读取Umlaute的尴尬。该文件使用Windows-1252编解码器保存,由一行组成:

Cells(Range("C1000000000").End(xlUp).Row + 1, 3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

我的简单测试程序用于隔离我不理解的行为;

123 äöü 456

控制台输出是:

#include <QCoreApplication>
#include <QDebug>
#include <QFile>
#include <QTextCodec>
#include <QByteArray>

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);

  QStringList ids;
  QFile inputFile("test.txt");
  QTextCodec *codec = QTextCodec::codecForName("Windows-1252");
  if (inputFile.open(QIODevice::ReadOnly))
  {
     QTextStream in(&inputFile);
     while (!in.atEnd())
     {
        QByteArray line = inputFile.readLine();
        QString string = codec->toUnicode(line);
        qDebug() << string;
     }
     inputFile.close();
  }
  else
      qDebug() << "Cannot open file";

  return a.exec();
}

所以所有的Umlaute都被吃掉了。

我在Linux中运行它,终端仿真器设置为使用UTF-8。这里可能出现什么问题。

0 个答案:

没有答案