Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: xintrea от Январь 02, 2014, 14:13



Название: Как узнать системную кодировку (локаль) в Qt 4, Qt 5?
Отправлено: xintrea от Январь 02, 2014, 14:13
Здравствуйте!

Пишу кроссплатформенный проект. Мне нужно узнать системную кодировку. То есть:

- В Linux с UTF8 - знать, что кодировка "utf-8";
- В Linux/BSD с KOI8-R - знать, что кодировка "koi8-r";
- В Windows с CP1251 - знать, что кодировка "cp1251".

Вот как это узнать? Пытался через QLocale, но там нет методов получения кодировки, там можно только получить язык и языковые настройки.

А как узнать системную кодировку, причем сделать это кроссплатформенно?


Название: Re: Как узнать системную кодировку (локаль) в Qt 4, Qt 5?
Отправлено: maint от Январь 02, 2014, 14:46
я делаю где то так, правда для mingw. Раньше это срабатывало для VS2005 и Borland. Евли ошибка, то к функциям POSIX, вроде нужно добавить подчеркивание перед функцией
Код:
    char *s;

    s = getenv("LC_ALL");
    if (s == NULL || s[0] == '\0') s = getenv("LC_CTYPE");
    else if (s == NULL || s[0] == '\0') s = getenv("LANG");
    else s = "C";