1

私は Qt5.1 で Qt を学習していますが、アクセントのコーディングに問題があります。私はポルトガル語で出力するプログラムを書いており、常にアクセントを使わなければなりません。この問題は、次のコードで示すことができます。

\#include < QDebug>

\#include < QTextStream>

\#include < QString>

int main(){

  QTextStream out(stdout); 

  qDebug() << "Olá Mundo!"; 

  out << QString("Olá Mundo!") << endl;

  out << "Olá Mundo!" << endl;
}
  • 「Olá Mundo」はポルトガル語で Hello World です。

出力は次のとおりです。

オラー・ムンド!

オラー・ムンド!

オラ・ムンド!

この 3 番目の「Olá Mundo」は間違っています。出力を正しく印刷するには、常に QString を使用する必要がありますか、または最後の行を正しく (Qstring 宣言なしで) 印刷する方法はありますか? そして、なぜqDebugが正しく表示されるのですか?

4

1 に答える 1

1

出力のコーデックを ISO 8859-1 に設定できます(out.setCodec("ISO 8859-1"))。その後、次のように記述できますがout << "Olá Mundo!" << endl;、その後out << QString("Olá Mundo!") << endl;は機能しなくなります。これは、QTextStream operator<<(const char * string) が ISO 8859-1 の文字列を想定し、operator<<(const QString & string) が UTF-8 の QString を想定しているためです。QTextStream のデフォルトのコーデックは UTF-8 です。

qDebug は文字列を内部的に UTF-8 に変換します。だからあなたは書くことができますqDebug() << "Olá Mundo!";

于 2013-08-25T01:51:46.907 に答える