На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Узнать системную кодировку
    Существует ли кроссплатформенный (Linux, MacOS, Windows) способ получения системной кодировки?

    Знаю, что есть setlocale(), но результат её работы в Linux и Windows несколько различается (на Mac попробовать не было возможности), да и выдаёт она не кодировку, а локаль. В принципе, можно обойтись системо-зависимыми решениями и условной компиляцией. Для Linux (думаю, что и для многих других *NIX) кодировку можно получить при помощи nl_langinfo(CODESET). В вот как быть с Windows пока не понятно. Буду признателен за помощь.

    Если имеет значение, софт пишется с использованием Qt.
      Брр. А что понимается под системной кодировкой? GetSystemDefaultLCID? WinNT+ использует Unicode.
      Сообщение отредактировано: shm -
        Видимо, кодировка, используемая в системой :-). Например, сейчас у меня в Linux UTF-8, лет 6-7 назад была KOI8-R. В Win XP системной является, насколько знаю, CP1251, хотя командная строка до сих пор в CP866.

        Локаль сама по себе "ru_RU" или "Russia_Russian" мне не нужна, нужна именно кодировка.
          ну судя по всему кутэ этого не умеет, так же как и, например, ставить системное время :)
            Цитата _lcf_ @
            ну судя по всему кутэ этого не умеет, так же как и, например, ставить системное время :)

            О решении вопроса средствами Qt речи не идет. Меня вполне устроит решение средствами стандартной библиотеки (например, если возможно, при помощи setlocale) или же системо-зависимое.

            Так, для Linux и, видимо, остальных *NIX можно использовать nl_langinfo, а вот как получить кодировку в Windows пока не ясно.
              GetACP, оно самое?

              Добавлено
              Это применительно функция ANSI естественно. Для Unicode кодовая страница жестко определена.
                Не уверен. Как я понял из описания, это только для ANSI, т.е. какую-нибудь Shift-JIS или Big-5 оно не отловит. Но все равно спасибо за помощь
                  Цитата voltron @
                  это только для ANSI, т.е. какую-нибудь Shift-JIS

                  :wacko: Прежде чем писать неплохо бы разораться в вопросе и не путать метры с килограммами. Для Shift-JIS будет 932, для Big5 950.
                  Сообщение отредактировано: shm -
                    А без WinAPI никак? Эх...
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,1777 ]   [ 17 queries used ]   [ Generated: 28.03.24, 16:52 GMT ]