QT 4: программирование GUI на С++
Шрифт:
Если мы всегда собираемся считывать и записывать файлы в кодировке Latin-1, вне зависимости от применяемой пользователем локальной кодировки, мы можем установить кодировку «ISO 8859-1» для потока QTextStream. Например:
При применении некоторых форматов файлов их кодировка задается в заголовке файла. Заголовок обычно представляется в простом виде в кодировке ASCII, чтобы обеспечить его правильное чтение вне зависимости
Поскольку QTextStream не позволяет менять кодировку после начала чтения, чтобы учесть явно заданную кодировку, придется заново прочитать файл, задавая правильное преобразование (полученное функцией QTextCodec::codecForName). В случае файла XML мы можем сами не делать преобразование кодировок, воспользовавшись классами Qt, предназначенными для XML и описанными в главе 15 .
Другое применение объектов QTextCodec заключается в указании кодировки строк в исходном коде. Давайте рассмотрим пример, когда группа японских программистов создает приложение, предназначенное главным образом для применения на японском рынке. Эти программисты, вероятно, будут писать свой исходный программный код в текстовом редакторе, использующем такие кодировки, как EUC-JP или Shift-JIS. Такой редактор позволяет им вводить японские иероглифы непосредственно, и, например, они смогут написать следующий код:
По умолчанию Qt считает, что аргументы функции tr задаются в кодировке Latin-1. Для изменения этого необходимо вызвать статическую функцию QTextCodec::setCodecForTr. Например:
Это должно быть сделано до первого вызова tr. Обычно мы делаем это в функции main непосредственно после создания объекта QApplication.
Другие используемые в программе строки будут по-прежнему интерпретироваться как строки, представленные в кодировке Latin-1. Если программисты хотят вводить японские иероглифы и здесь, они могут явно преобразовывать их в Unicode, используя объект QTextCodec:
Можно поступить по-другому и указать Qt
Описанные выше методы можно применять к любому языку, алфавит которого выходит за рамки кодировки Latin-1, включая языки китайский, греческий, корейский и русский.
Ниже приводится список кодировок, поддерживаемых Qt 4:
• Apple Roman
• Big5
• Big5-HKSCS
• EUC-JP
• EUC-KR
• GB18030-0
• IBM 850
• IBM 866
• IBM 874
• ISO 2022-JP
• ISO 8859-1
• ISO 8859-2
• ISO 8859-3
• ISO 8859-4
• ISO 8859-5
• ISO 8859-6
• ISO 8859-7
• ISO 8859-8
• ISO 8859-9
• ISO 8859-10
• ISO 8859-13
• ISO 8859-14
• ISO 8859-15
• ISO 8859-16
• Iscii-Bng
• Iscii-Dev
• Iscii-Gjr
• Iscii-Knd
• Iscii-Mlm
• Iscii-Ori
• Iscii-Pnj
• Iscii-Tlg
• Iscii-Tml
• JIS X 0201
• JIS X 0208
• KOI8-R
• KOI8-U
• MuleLao-1
• ROMAN8
• Shift-JIS
• TIS-620
• TSCII
• UTF-8
• UTF-16
• UTF-16BE
• UTF-16LE
• Windows-1250
• Windows-1251
• Windows-1252
• Windows-1253
• Windows-1254
• Windows-1255
• Windows-1256
• Windows-1257
• Windows-1258
• WINSAMI2