4

私はC++とQTを使用していますが、ドイツのウムラウトに問題があります。「wirsindmüde」のようなQStringがあり、QTextBrowserに正しく表示するために、「wir sindmüde」に変更したいと思います。

私はこのようにそれをやろうとしました:

s = s.replace( QChar('ü'), QString("ü"));

しかし、それは機能しません。

また

 s = s.replace( QChar('\u00fc'), QString("ü"))

動作しません。

文字列のすべての文字をループで繰り返す場合、「ü」は2文字です。

誰か助けてもらえますか?

4

2 に答える 2

7

QStringはUTF-16です。

QStringは、16ビットQCharの文字列を格納します。各QCharは1つのUnicode4.0文字に対応します。(コード値が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
于 2011-10-18T11:23:55.400 に答える
1

üUnicodeには2つの異なる表現があります。

  • シングルポイント00FC(ラテン語の小さな文字Uと糖尿病)
  • シーケンス0075(ラテン文字U)0308(分音記号の組み合わせ)

両方を確認する必要があります。

于 2011-10-18T11:38:49.833 に答える