Unicode in Qt
Unicode ist der Standard für die Kodierung von Text in fast allen Sprachen der Welt. Heutzutage wird es auf den meisten modernen Betriebssystemen als native Kodierung für Text verwendet. Die wichtigste Ausnahme bildet Microsoft Windows, das nach wie vor ein duales System nutzt, das sowohl Codepages als auch Unicode für Anwendungen unterstützt.
Qt-Klassen für die Arbeit mit Zeichenketten
Diese Klassen sind relevant, wenn Sie mit Zeichenkettendaten arbeiten. Informationen zur Darstellung von Text finden Sie in der Übersicht zur Rich-Text-Verarbeitung; sollten Ihre Zeichenkettendaten im XML-Format vorliegen, lesen Sie die Übersicht zur XML-Verarbeitung.
Einheitliche Darstellung von Latin-1-, UTF-8- oder UTF-16-Zeichenketten mit einer schreibgeschützten Teilmenge der QString-API | |
Byte-Array | |
Liste von Byte-Arrays | |
Enthält eine Folge von Bytes, die in einem Byte-Array schnell abgeglichen werden können | |
Ansicht eines Byte-Arrays mit einer schreibgeschützten Teilmenge der QByteArray-API | |
16-Bit-Unicode-Zeichen | |
Vergleicht Zeichenfolgen gemäß einem lokalisierten Sortieralgorithmus | |
Kann zur Beschleunigung der Zeichenfolgen-Sortierung verwendet werden | |
8-Bit-ASCII-/Latin-1-Zeichen | |
Optimierte Suche nach Teilzeichenfolgen in Latin-1-Text | |
Schlanke Hülle um ein US-ASCII/Latin-1-kodiertes Zeichenfolgenliteral | |
Konvertiert zwischen Zahlen und deren Zeichenfolgendarstellungen in verschiedenen Sprachen | |
Musterabgleich mithilfe regulärer Ausdrücke | |
Die Ergebnisse eines Abgleichs eines QRegularExpression-Objekts mit einer Zeichenkette | |
Iterator über die Ergebnisse eines globalen Abgleichs eines QRegularExpression-Objekts mit einer Zeichenkette | |
Kompilierungszeit-Version von QByteArrayMatcher | |
Kompilierungszeit-Version von QLatin1StringMatcher | |
Unicode-Zeichenkette | |
Basisklasse für die Kodierung und Dekodierung von Text | |
Zustandsbasierter Dekoder für Text | |
Zustandsbasierter Encoder für Text | |
Liste von Zeichenfolgen | |
Enthält eine Folge von Zeichen, die in einer Unicode-Zeichenkette schnell abgeglichen werden können | |
Schlanke Hülle um QString-Teilstrings | |
Teilt Zeichenfolgen anhand vorgegebener Trennzeichen in Tokens auf | |
Einheitliche Ansicht auf UTF-16-Zeichenfolgen mit einer schreibgeschützten Teilmenge der QString-API | |
Möglichkeit, Unicode-Textgrenzen in einer Zeichenkette zu ermitteln | |
Praktische Schnittstelle zum Lesen und Schreiben von Text | |
Einheitliche Darstellung von UTF-8-Zeichenketten mit einer schreibgeschützten Teilmenge der QString-API |
Informationen zu Unicode im Web
Das Unicode-Konsortium stellt eine Reihe von Dokumenten zur Verfügung, darunter
Unicode in Qt
In Qt und in den meisten Anwendungen, die Qt verwenden, werden die meisten oder alle für den Benutzer sichtbaren Zeichenfolgen im Unicode-Format gespeichert. Qt bietet:
- Konvertierung in/aus älteren Kodierungen für die Datei-E/A: siehe QTextCodec und QTextStream.
- Unterstützung für lokalisierungsspezifische Eingabemethoden und Tastaturen.
- Eine Zeichenfolgenklasse, QString, die Unicode-Zeichen speichert und die Migration von C-Zeichenfolgen unterstützt, einschließlich schneller Konvertierung in und aus UTF-8, ISO-8859-1 und US-ASCII sowie aller üblichen Zeichenfolgenoperationen.
- Unicode-fähige UI-Steuerelemente.
- Unicode-konforme Textsegmentierung (QTextBoundaryFinder)
- Unicode-konforme Zeilenumbrüche und Textdarstellung
Um die Vorteile von Unicode voll auszuschöpfen, empfehlen wir, alle für den Benutzer sichtbaren Zeichenfolgen mit QString zu speichern und die gesamte Textdatei-E/A über QTextStream durchzuführen.
Alle Funktionsargumente in Qt, bei denen es sich um für den Benutzer sichtbare Zeichenfolgen handeln kann – beispielsweise ` QLabel::setText()` und viele andere –, erwarten ` const QString &`-Objekte. ` QString ` bietet eine implizite Umwandlung von ` const char * `, sodass beispielsweise
label->setText("Password:");funktionieren. Es gibt außerdem eine Funktion, ` QObject::tr()`, die Übersetzungsunterstützung bietet, und zwar folgendermaßen:
label->setText(tr("Password:"));QObject::tr() bildet von const char * auf eine Unicode-Zeichenkette ab und verwendet dabei installierbare QTranslator -Objekte für die Zuordnung.
Qt stellt eine Reihe integrierter „ QTextCodec “-Klassen bereit, d. h. Klassen, die die Konvertierung zwischen Unicode und älteren Kodierungen beherrschen, um Programme zu unterstützen, die mit anderen Programmen kommunizieren oder Dateien in älteren Dateiformaten lesen bzw. schreiben müssen.
Die Konvertierung zu/von „ const char * “ erfolgt über UTF-8. Anwendungen können jedoch problemlos Codecs für andere Locales finden und jede geöffnete Datei oder Netzwerkverbindung so einstellen, dass ein spezieller Codec verwendet wird.
Da US-ASCII und ISO-8859-1 so weit verbreitet sind, gibt es auch besonders schnelle Funktionen für die Konvertierung in diese und aus diesen Formaten. Um beispielsweise das Symbol einer Anwendung zu öffnen, könnte man Folgendes tun:
oder
QFile file(QLatin1String("appicon.png"));Qt unterstützt die Darstellung von Text in den meisten weltweit geschriebenen Sprachen. Die detaillierte Liste der unterstützten Schriftsysteme hängt ein wenig von der Betriebssystemunterstützung und der Verfügbarkeit von Schriftarten auf dem Zielsystem ab.
Siehe auch Internationalisierung mit Qt.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.