Unicode в Qt
Unicode — стандарт кодирования текста почти для всех языков мира. В настоящее время он используется в качестве родной кодировки текста на большинстве современных операционных систем. Главное исключение — Microsoft Windows, которая по-прежнему поддерживает двойную систему, которая поддерживает кодовые страницы и Unicode для приложений.
Qt 5.0 использует и полностью поддерживает версию 6.2 стандарта Unicode.
Классы Qt для работы со строками
Эти классы актуальны при работе с данными строк. Для получения информации о отображении текста, см. обзор Обработки форматированного текста, а если ваши данные строк в формате XML, см. обзор Обработки XML.
Удобный интерфейс для чтения и записи текста |
|
Массив байтов |
|
Список массивов байтов |
|
Содержит последовательность байтов, которые можно быстро сопоставить в массиве байтов |
|
16-битный символ Unicode |
|
8-битный символ ASCII/Latin-1 |
|
Сравнивает строки в соответствии с алгоритмом сортировки, локализованным по языку |
|
Может быть использован для ускорения сортировки строк |
|
Преобразует числа и их строковые представления на разных языках |
|
Тонкий обёртку над строковым литералом US-ASCII/Latin-1 |
|
Строка символов Unicode |
|
Тонкий обёртку над подстроками QString |
|
Список строк |
|
Содержит последовательность символов, которые можно быстро сопоставить в строке Unicode |
|
Способ нахождения границ текста 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/archives/qt-5.6/unicode.html