Frage

Ich arbeite mit C ++ und QT und habe ein Problem mit deutschen Umlauts. Ich habe ein Qstring wie "Wirinnen Müde" und möchte ihn in "Wirin Müde" ändern, um es in einem QtextBrowser richtig zu zeigen.

Ich habe versucht, es so zu machen:

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

Aber es funktioniert nicht.

Ebenfalls

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

funktioniert nicht.

Wenn ich alle Zeichen der Zeichenfolge in einer Schleife durchträgt, sind die 'ü' zwei Zeichen.

Kann mir jemand helfen?

War es hilfreich?

Lösung

QStrings sind UTF-16.

QString speichert eine Reihe von 16-Bit-QChars, wobei jedes QCHAR ein Unicode 4.0-Zeichen entspricht. (Unicode -Zeichen mit Codewerten über 65535 werden unter Verwendung von Ersatzpaaren, dh zwei aufeinanderfolgenden QChars, gespeichert.)

Also versuche

//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

Andere Tipps

Es gibt zwei verschiedene Darstellungen von ü in Unicode:

  • Der einzelne Punkt 00FC (Lateinischer kleiner Buchstaben U mit Diaeresis)
  • Die Sequenz 0075 (Lateinischer kleiner Buchstabe u) 0308 (Kombination Diaeresis)

Sie sollten nach beidem suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top