質問
私はC ++とQTと協力しており、ドイツのウムラウトに問題があります。 「WirSindMüde」のようなQStringがあり、QTextBrowserで正しく表示するために「WirSindMüde」に変更したいと考えています。
私はこのようにそれをしようとしました:
s = s.replace( QChar('ü'), QString("ü"));
しかし、それは機能しません。
また
s = s.replace( QChar('\u00fc'), QString("ü"))
動作しません。
文字列のすべての文字をループで繰り返すと、「ü」は2文字です。
誰かが私を助けることができますか?
解決
QStringsはUTF-16です。
QSTRINGは、各QCHARが1つのUnicode 4.0文字に対応する16ビットQcharの文字列を保存します。 (65535を超えるコード値を持つUnicode文字は、代理ペア、つまり2つの連続したQcharを使用して保存されます。)
だから試してみてください
//if ü is utf-16, see your fileencoding to know this
s.replace("ü", "ü")
//if ü if you are inputting it from an editor in latin1 mode
s.replace(QString::fromLatin1("ü"), "ü");
s.replace(QString::fromUtf8("ü"), "ü"); //there are a bunch of others, just make sure to select the correct one
他のヒント
の2つの異なる表現があります ü
Unicode:
- 単一ポイント
00FC
(ラテン語の小文字uを添えて) - シーケンス
0075
(ラテン語の小文字u)0308
(Diaeresisを組み合わせて)
両方を確認する必要があります。
所属していません StackOverflow