質問

私は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を組み合わせて)

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top