Unicode in Qt

Unicode ist der Standard für die Kodierung von Text in fast allen auf der Welt gesprochenen Sprachen. Heutzutage wird er auf den meisten modernen Betriebssystemen als native Kodierung für Text verwendet. Die große Ausnahme ist Microsoft Windows, das immer noch ein duales System hat, das Codepages und Unicode für Anwendungen unterstützt.

Qt's Klassen für die Arbeit mit Strings

Diese Klassen sind relevant für die Arbeit mit String-Daten. Informationen über das Rendern von Text finden Sie in der Übersicht Rich Text Processing, und wenn Ihre String-Daten in XML vorliegen, lesen Sie die Übersicht XML Processing.

QAnyStringView

Einheitliche Sicht auf Latin-1, UTF-8 oder UTF-16 Strings mit einer schreibgeschützten Teilmenge der QString API

QByteArray

Array von Bytes

QByteArrayList

Liste von Byte-Arrays

QByteArrayMatcher

Enthält eine Folge von Bytes, die schnell in einem Byte-Array abgeglichen werden können

QByteArrayView

Ansicht eines Arrays von Bytes mit einer schreibgeschützten Teilmenge der QByteArray API

QChar

16-Bit-Unicode-Zeichen

QCollator

Vergleicht Strings nach einem lokalisierten Sortieralgorithmus

QCollatorSortKey

Kann verwendet werden, um die Kollationierung von Strings zu beschleunigen

QLatin1Char

8-Bit ASCII/Latin-1-Zeichen

QLatin1StringMatcher

Optimierte Suche nach Teilstrings in Latin-1-Text

QLatin1StringView

Dünner Wrapper um ein US-ASCII/Latin-1 kodiertes String-Literal

QLocale

Konvertierung zwischen Zahlen und ihren String-Repräsentationen in verschiedenen Sprachen

QRegularExpression

Mustervergleich mit regulären Ausdrücken

QRegularExpressionMatch

Die Ergebnisse eines Abgleichs eines QRegularExpression mit einer Zeichenkette

QRegularExpressionMatchIterator

Iterator für die Ergebnisse einer globalen Übereinstimmung eines QRegularExpression-Objekts mit einer Zeichenkette

QStaticByteArrayMatcher

Kompilierzeit-Version von QByteArrayMatcher

QStaticLatin1StringMatcher

Kompilierzeit-Version von QLatin1StringMatcher

QString

Unicode-Zeichenfolge

QStringList

Liste von Zeichenketten

QStringMatcher

Enthält eine Folge von Zeichen, die schnell in einer Unicode-Zeichenfolge gefunden werden können

QStringRef

Dünner Wrapper um QString-Substrings

QStringTokenizer

Zerlegt Strings in Token entlang gegebener Trennzeichen

QStringView

Einheitliche Sicht auf UTF-16-Strings mit einer schreibgeschützten Teilmenge der QString-API

QTextBoundaryFinder

Möglichkeit, Unicode-Textgrenzen in einer Zeichenkette zu finden

QTextStream

Bequeme Schnittstelle zum Lesen und Schreiben von Text

QUtf8StringView

Einheitliche Sicht auf UTF-8-Strings mit einer schreibgeschützten Teilmenge der QString-API

Informationen über Unicode im Web

Das Unicode-Konsortium hat eine Reihe von Dokumenten zur Verfügung gestellt, darunter

Unicode in Qt

In Qt und in den meisten Anwendungen, die Qt verwenden, werden die meisten oder alle für den Benutzer sichtbaren Zeichenketten in Unicode gespeichert. Qt bietet:

  • Übersetzung in/aus Legacy-Kodierung für Datei-E/A: siehe QTextCodec und QTextStream.
  • Unterstützung für landesspezifische Eingabemethoden und Tastaturen.
  • Eine String-Klasse, QString, die Unicode-Zeichen speichert, mit Unterstützung für die Migration von C-Strings, einschließlich der schnellen Übersetzung in und aus UTF-8, ISO8859-1 und US-ASCII, sowie alle üblichen String-Operationen.
  • Unicode-fähige UI-Steuerelemente.
  • Unicode-konforme Textsegmentierung (QTextBoundaryFinder)
  • Unicode-kompatibler Zeilenumbruch und Textwiedergabe

Um die Vorteile von Unicode voll auszuschöpfen, empfehlen wir die Verwendung von QString für die Speicherung aller für den Benutzer sichtbaren Strings und die Durchführung aller Textdatei-E/A mit QTextStream.

Alle Funktionsargumente in Qt, die für den Benutzer sichtbare Zeichenketten sein können, QLabel::setText() und viele andere, nehmen const QString &s. QString bietet implizites Casting von const char *, so dass Dinge wie

label->setText("Password:");

funktionieren werden. Es gibt auch eine Funktion, QObject::tr(), die Übersetzungsunterstützung bietet, wie diese:

label->setText(tr("Password:"));

QObject::tr() wandelt const char * in einen Unicode-String um und verwendet installierbare QTranslator Objekte, um die Umwandlung durchzuführen.

Qt bietet eine Reihe von eingebauten QTextCodec Klassen, d.h. Klassen, die wissen, wie man zwischen Unicode und Legacy-Kodierungen übersetzt, um Programme zu unterstützen, die mit anderen Programmen kommunizieren oder Dateien in Legacy-Dateiformaten lesen/schreiben müssen.

Die Konvertierung von/nach const char * verwendet UTF-8. Anwendungen können jedoch leicht Codecs für andere Sprachumgebungen 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 das Mapping von und zu ihnen. Um zum Beispiel das Symbol einer Anwendung zu öffnen, könnte man dies tun:

QFile file(QString::fromLatin1("appicon.png"));

oder

QFile file(QLatin1String("appicon.png"));

Qt unterstützt die Darstellung von Text in den meisten auf der Welt geschriebenen Sprachen. Die detaillierte Liste der unterstützten Schriftsysteme hängt ein wenig von der Unterstützung durch das Betriebssystem und der Verfügbarkeit von Schriften auf dem Zielsystem ab.

Siehe auch Internationalisierung mit Qt.

© 2025 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.