Указание кодировки строк в исходном коде
По умолчанию аргументы функции tr() воспринимаются в кодировке Latin-1. Для переопределения этого необходимо воспользоваться классом QTextCodec, а именно статической функцией QTextCodec::setCodecForTr().
Так как вызов функции QTextCodec::setCodecForTr() должен быть сделан до первого вызова tr(), то удобнее всего это реализовать сразу после создания объекта QApplication:
#include <QtGui> #include <QTextCodec> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextCodec *utfcodec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(utfcodec); QMainWindow *wnd = new QMainWindow; QLabel *lb = new QLabel(QObject::tr("Привет, Мир"), wnd); wnd->show(); return app.exec(); }
Для преобразования строк из локальной кодировки в Unicode снова можно воспользоваться объектом QTextCodec:
QTextCodec *wincodec = QTextCodec::codecForName("Windows-1251"); QString text = wincodec->toUnicode("тест");
Либо:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
Кодировки, поддерживаемые в Qt 4.3:
- 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-10
- ISO 8859-13 — ISO 8859-16
- Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and 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-1258
- WINSAMI2
page_revision: 6, last_edited: 1199729908|%e %b %Y, %H:%M %Z (%O ago)





