Russian Qt Forum

Qt => Общие вопросы => Тема начата: voltron от Октябрь 22, 2012, 14:13



Название: Узнать системную кодировку
Отправлено: voltron от Октябрь 22, 2012, 14:13
Существует ли кроссплатформенный способ (LInux, MacOS, Windows) получения системной кодировки? Все, что нашел это QLocale::system(), которая возвращает системную локаль, но не кодировку; и QTextCodec::codecForLocale(), который возвращает  кодек с именем «System» не зависимо от текущей кодировки.

Нужна именно кодировка, т.е. строка вида «UTF-8», «ISO 8859-9» и т.п.


Название: Re: Узнать системную кодировку
Отправлено: maint от Октябрь 22, 2012, 15:08
в С/С++ есть функция setlocale. С ее помощью можно определить текущую кодировку.


Название: Re: Узнать системную кодировку
Отправлено: voltron от Октябрь 22, 2012, 20:45
Спасибо. Посмотрел, там возвращается несколько нестандартное (на мой взгляд) обозначение локали смешанное с данными о кодировке, причем в разных ОС результат чуть-чуть отличается
  • Linux — ru_RU.UTF-8
  • Windows — Russian_Russia.1251

Где-то есть список всех возможных значений, которые эта функция может вернуть на разных системах?


Название: Re: Узнать системную кодировку
Отправлено: voltron от Октябрь 24, 2012, 13:01
В *NIX получить кодировку можно при помощи
Код:
nl_langinfo(CODESET);
К сожалению, в Win такой код работать не будет. Ищу аналоги