|
|||||||
Как в Qt узнать системную кодировку локали под Windows
Время создания: 23.09.2018 17:39
Текстовые метки: qt, qt5, локаль, системная, кодировка, Windows
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Локализация
Запись: xintrea/mytetra_syncro/master/base/15377135758eat100ki6/text.html на raw.github.com
|
|||||||
|
|||||||
Чтобы узнать системную кодировку в Windows, надо понимать, что в Qt нет готовых методов. Поэтому получение системной кодировки (она же кодировка локали) придется делать с помощью функции WinAPI GetACP() и условной компиляции. А с помощью Windows-функции GetOEMCP() можно узнать кодировку консоли. Код будет выглядеть примерно так: #ifdef Q_OS_WIN32 #include "windows.h" #endif using namespace std; // Кодировка локали QString getSystemCodepage() { #ifdef Q_OS_WIN32 return "CP "+QString::number( GetACP() ); #endif #ifdef Q_OS_LINUX return "UTF-8"); #endif return ""; } // Кодировка консоли QString getConsoleCodepage() { #ifdef Q_OS_WIN32 return "CP "+QString::number( GetOEMCP() ); #endif #ifdef Q_OS_LINUX return "UTF-8"); #endif return ""; } А использовать эту функцию можно примерно так: QString codePage=getSystemCodepage(); qDebug() << "System code page: " << codePage; if(codePage.size()>0) { QTextCodec::setCodecForLocale(QTextCodec::codecForName(codePage.toLatin1())); } QString consoleCodePage=getConsoleCodepage(); qDebug() << "Console code page: " << consoleCodePage; После выполнения такого кода в русскоязычной Windows, в Qt-приложении будет установлена кодировка локали CP1251. Кодировка локали для Windows - это та кодировка, в которой записываются имена файлов и директорий. Однако следует помнить, что в Windows по историческим причинам кодировка консоли отличается, и в русскоязычной Windows для консоли принята кодировка CP 866. Поэтому вышеприведенный код напечатает следующее: System code page: "CP 1251" Console code page: "CP 866" О том, как можно одновременно работать с двумя кодировками, рассказывается в статье Как в Qt работать с русскими именами файлов и директорий под Windows. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|