Spec-Zone.ru › Qt 5.9

Unicode в Qt

Unicode — стандарт кодирования текста практически для всех языков мира. В настоящее время он используется в качестве родной кодировки текста на большинстве современных операционных систем. Главное исключение — Microsoft Windows, которая по-прежнему поддерживает двойную систему, обеспечивающую поддержку кодовых страниц и Unicode для приложений.

Qt 5.0 использует и полностью поддерживает версию 6.2 стандарта Unicode.

Классы Qt для работы со строками

Эти классы актуальны при работе с данными строк. Для информации о рендеринге текста см. обзор Обработки форматированного текста, а если ваши данные строк находятся в формате XML, см. обзор Обработки XML.

QTextStream

Удобный интерфейс для чтения и записи текста

QByteArray

Массив байтов

QByteArrayList

Список массивов байтов

QByteArrayMatcher

Содержит последовательность байтов, которые можно быстро сопоставить в массиве байтов

QStaticByteArrayMatcher

Реализация QByteArrayMatcher на этапе компиляции

QChar

16-битный символ Unicode

QLatin1Char

8-битный символ ASCII/Latin-1

QCollator

Сравнивает строки в соответствии с алгоритмом сортировки, локализованным для определённого языка

QCollatorSortKey

Можно использовать для ускорения сортировки строк

QLocale

Преобразует числа и их строковые представления на различных языках

QLatin1String

Тонкий обёртный класс над строковой литералом US-ASCII/Latin-1

QString

Строка символов Unicode

QStringRef

Тонкий обёртный класс над подстроками QString

QStringList

Список строк

QStringMatcher

Содержит последовательность символов, которые можно быстро сопоставить в строке Unicode

QTextBoundaryFinder

Способ нахождения границ текста Unicode в строке

Информация о Unicode в сети

Консорциум Unicode имеет ряд документов, включая

  • Текущую версию стандарта: Unicode 6.2.0.
  • Техническое введение в Unicode
  • Главная страница стандарта

Unicode в Qt

В Qt, и в большинстве приложений, использующих Qt, большинство или все видимые пользователю строки хранятся с использованием Unicode. Qt предоставляет:

  • Перевод в/из устаревших кодировок для ввода/вывода файлов: см. QTextCodec и QTextStream.
  • Поддержку локализованных методов ввода и клавиатур.
  • Класс строк QString, хранящий символы Unicode с поддержкой миграции из C-строк, включая быстрый перевод в/из UTF-8, ISO8859-1 и US-ASCII, и все обычные операции со строками.
  • Элементы пользовательского интерфейса, поддерживающие Unicode.
  • Поддержка сегментации текста Unicode (QTextBoundaryFinder)
  • Поддержка переноса строк и рендеринга текста, совместимых с Unicode

Для максимальной пользы от Unicode рекомендуется использовать QString для хранения всех видимых пользователю строк и выполнять весь ввод/вывод текстовых файлов с использованием QTextStream.

Все аргументы функций в Qt, которые могут быть видимыми пользователю строками, например, QLabel::setText() и многие другие, принимают const QString &. QString обеспечивает неявное преобразование из const char *, поэтому такие конструкции, как

label->setText("Password:");

будут работать. Также существует функция QObject::tr(), которая обеспечивает поддержку перевода, например:

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

QObject::tr() преобразует из const char * в строку Unicode и использует устанавливаемые объекты QTranslator для выполнения преобразования.

Qt предоставляет ряд встроенных классов QTextCodec, то есть классы, знающие, как преобразовывать между Unicode и устаревшими кодировками, чтобы поддерживать программы, которые должны взаимодействовать с другими программами или читать/записывать файлы в устаревших форматах.

Преобразование в/из const char * использует UTF-8. Однако приложения могут легко найти кодеки для других локалей и установить любой открытый файл или сетевое подключение для использования специального кодека.

Поскольку US-ASCII и ISO-8859-1 настолько распространены, существуют также особенно быстрые функции для преобразования в/из них. Например, для открытия значка приложения можно сделать так:

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

или

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

Qt поддерживает отображение текста на большинстве языков мира. Подробный список поддерживаемых письменных систем в некоторой степени зависит от поддержки операционной системы и доступности шрифтов на целевой системе.

См. также Международная локализация с помощью Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/unicode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API