私はGUIなしでQtで非常に基本的なテキスト操作アプリケーションを書き始めました。私のテキストには特殊文字が含まれていましたが、何をしても、どういうわけかそれらの特殊文字を印刷できませんでした。QCoreApplication
次に、インスタンスを追加した後(以前は必要ないと思ったため、削除しました)、すべてが正常に機能していることに気付きました。
コードは次のとおりです。
#include <QCoreApplication>
#include <QString>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString s(QString::fromUtf8("aä\xc3\xa4")); // aää
qDebug() << s;
qDebug() << s.toAscii();
qDebug() << s.toLatin1();
qDebug() << s.toUtf8();
qDebug() << s.toLocal8Bit();
qDebug("%s", qPrintable(s));
qDebug("%i", s.length());
qDebug("%i", strlen(qPrintable(s)));
return 0;
}
次の出力QCoreApplication
(すべてが正常に機能します):
"aää"
"aää"
"aää"
"aää"
"aää"
aää
3
5
定義されている行をコメントアウトした後に出力しQCoreApplication
ます(特殊文字は表示されなくなります)。
"a"
"a"
"a"
"a"
"a"
a
3
1
を呼び出した後qPrintabable(s)
、特殊文字はすでに削除されていることに注意してください。私はこれを確認してテストしましたが、それQDebug
は問題ではありません。
また、ファイルが実際にUTF-8でエンコードされているかどうかも確認しました。
QCoreApplication
インスタンス化されていないのに、QStringが特殊文字を正しく処理しないのはなぜですか?