ソースコードのエンコーディングによって異なります。
私はあなたのファイルがすでにUTF-8でエンコードされていると思う傾向があり、文字üはC3BCとしてエンコードされています。
http://doc.qt.io/qt-4.8/qstring.html#QString-8によると、デフォルトで考慮されるQString :: fromAscii()メソッドを使用して文字列をUnicodeに変換するQString::QString ( const char * str )
コンストラクターを呼び出しています。Latin1コンテンツとしての入力。
C3とBCはどちらもラテン語1で有効であるため、それぞれ√と¼を表します。これらをUTF-8に変換すると、次の文字になります。
Ã(C3)-> C3 83
¼(BC)-> C2 BC
これにより、次の文字列が表示されます: "4d c3 83 c2 bc 6c 6c 65 72"
要約すると、これはダブルUTF-8エンコーディングです。
この問題を解決するためのいくつかのオプションがあります。
1)お気に入りのテキストエディタを使用して、ソースファイルをLatin-1に変換できます。
2)リテラル文字列の\ xFCにü文字を適切にエスケープできるため、文字列はファイルのエンコーディングに依存しません。
3)ファイルと文字列をUTF-8データとして保持し、使用できますQString str = QString::fromUtf8 ("Müller");
更新:この問題はQT5では関連しなくなりました。http://doc.qt.io/qt-5/qstring.html#QString-8は、コンストラクターがQString::fromUtf8()
の代わりに内部的に使用するようになったと述べていQString::fromAscii()
ます。したがって、UTF-8エンコーディングが一貫して使用されている限り、デフォルトで使用されます。