我一直在努力争取从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。这里可能出现什么问题。