Unicode
Unicode - многобайтовый набор символов, переносимый между всеми основными компьютерными платформами и с подходящим для охвата всего мира. Локаль имеется также одна; не включает кодовые страницы или другие сложности, которые затрудняют написание и тестирование программного обеспечения. Не существует другого достаточно кроссплатформенного набора символов. По этим причинам Unicode 4.0 используется в качестве собственного набора символов Qt.
Информация о Unicode в сети
У Unicode Consortium имеется некоторое доступных количество документов, включая
Стандарт
The current version of the standard is 4.0.0.
Unicode в Qt
В Qt, и в большинстве использующих Qt приложений,большая часть или все строки, доступные пользователю, сохраняются с использованием Unicode. Qt предоставляет:
- Преобразование в/из устаревшей кодировки для файлового ввода/вывода: смотрите QTextCodec и QTextStream.
- Преобразование из методов ввода (Input Methods) и 8-битового ввода с клавиатуры.
- Преобразование в устаревшие наборы символов для вывода на экран.
- Строковый класс QString, который сохраняет символы в Unicode, поддерживает переход от строк C, включая быстрое (кэширующее) преобразование в/из US-ASCII, и все обычные строковые операции.
- Виджеты с необходимой поддержкой Unicode.
- Поддержка обнаружения Unicode в Windows, так что Qt предоставляет Unicode даже на платформах Windows, которые не поддерживают его собственными средствами.
Для получения всех выгод Unicode, мы рекомендуем использовать QString для хранения строк, доступных пользователю, и выполнять все операции ввода/вывод текстовым файлом используя QTextStream. Используйте QKeyEvent::text() для ввода с клавиатуры в любом пользовательском виджете, который создадите; это не имеет большой разницы для медленно набирающих людей в Западной Европе или Северной Америке, но для быстро набирающих людей или людей, использующих специальные методы ввода, использование text() полезнее.
Все аргументы функции в 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 * использует кодек, не зависящий от локали. Однако, приложения могут легко найти кодеки для других локалей и установить любому открытому файлу или сетевому соединению использование специального кодека. Можно также установить новые кодеки для преобразований, не поддерживаемых встроенными кодеками. (На момент написания одним из таких примеров является Vietnamese/VISCII.)
Поскольку US-ASCII и ISO-8859-1 являются настолько распространёнными, имеются особые быстрые функции для отображения в/из них. Например, для открытия пиктограммы приложения сделаем:
QFile file(QString::fromLatin1("appicon.png"));
или
QFile file(QLatin1String("appicon.png"));
Относительно вывода, Qt выполняет наиболее подходящее преобразование из Unicode в любую кодировку, предоставляемую системой и шрифтами. В зависимости от операционной системы, локали, доступности шрифта и поддержки со стороны Qt используемых символов, это преобразование может быть правильным или неправильным. Мы будем расширять это в следующих версиях, с выделением в первую очередь наиболее распространённых локалей.
Смотрите также Интернационализация с Qt.
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) |
Торговые марки |
Qt 4.5.3 |
|