Unicode в Qt
|
QByteArray | Байтовый массив |
---|---|
QByteArrayMatcher | Содержит последовательность байт, которые могут быть быстро найдены в байтовом массиве |
QChar | 16-битный символ Unicode |
QLatin1Char | 8-битный символ ASCII/Latin-1 |
QLatin1String | Тонкая оболочка вокруг строки литералов в кодировке ASCII/Latin-1 |
QLocale | Конвертирует числа в их строковые представления на различных языках |
QString | Строка символов Unicode |
QStringList | Список строк |
QStringMatcher | Содержит последовательность символов, которые могут быть быстро найдены в строке Unicode |
QStringRef | Тонкая обертка вокруг подстрок QString |
QTextBoundaryFinder | Способ поиска границ текста Unicode в строке |
QTextStream | Вспомогательный интерфейс для чтения и записи текста |
У Unicode Consortium имеется некоторое доступных количество документов, включая
Текущая версия стандарта - Unicode 5.1.0.
Предыдущие опубликованные версии спецификаций:
В Qt, и в большинстве использующих Qt приложений,большая часть или все строки, доступные пользователю, сохраняются с использованием Unicode. Qt предоставляет:
Для получения всех выгод 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.
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |