Форум программистов, компьютерный форум CyberForum.ru

Кракозябры в консоли - почему? - C++

Восстановить пароль Регистрация
 
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
11.08.2013, 21:22     Кракозябры в консоли - почему? #1
Добрый день. Почитав форум и статью про кодировки вообще я задался парой вопросов. Ладно, мне более менее ясно, почему возникают кракозябры (win1251 -> OEM 866). Но неясно 2 момента:
1) Почему при вызове функции setlocale(LC_ALL, "Russian") работает вывод (и почему вообще это происходит?), но не работает ввод?
2) Почему при SetConsoleCP(1251) и SetConsoleOutputCP(1251) работает ввод и вывод, но нет поддержки точечных шрифтов? Я подозреваю, что они не поддерживают русские символы для 1251, но тогда неясно, что же делает setlocale.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2013, 21:22     Кракозябры в консоли - почему?
Посмотрите здесь:

В заголовоке окна кракозябры, да и на компонентах тоже C++
почему чтобы корректно отображались русские буквы в консоли, мало изменить кодировку, а надо ещё и шрифт менять? C++
Файл создается, но в него не записываеться информация, и не выводится в консоль C++
C++ Почему введенное значение в консоли считывается только до пробела?
C++ Как прочитать с экрана русские символы, читает кракозябры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
12.08.2013, 22:26     Кракозябры в консоли - почему? #2
по поводу почему не работает или не поддерживает - вам ответит Borland либо microsoft и т.д. А функция setlocale - устанавливает правила форматирования текста для различных регионов. Например: символ десятичной точки, символ для разделения группы цифр, знак местной денежной еденицы и т.д.
reisal78
 Аватар для reisal78
603 / 516 / 119
Регистрация: 28.04.2013
Сообщений: 1,451
12.08.2013, 22:35     Кракозябры в консоли - почему? #3
Мне тоже интересна эта тема.
А какие отличия если скажем вместо (LC_ALL, "Russian") я укажу (LC_ALL, "") или (LC_ALL, "Rus")?
я так понимаю что как раз в десятичной точке и тд?
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
12.08.2013, 22:44     Кракозябры в консоли - почему? #4
Rus
rus
russian
Russian
Russian_Russia
Russian_Russia.1251

ЕСТЬ СИНОНИМЫ!!! - Устанавливают кодовую страницу 1251 (которую использует руссифицированная Windows). При этом консоль все же имеет кодовую страницу OEM 866!

C++
1
setlocale(categ, locale);
если параметр locale равен NULL - ничего не изменится. Если пустой строке ("") - применяются системные настройки.

Цитата Сообщение от reisal78 Посмотреть сообщение
я так понимаю что как раз в десятичной точке и тд?
+ устанавливается кодовая страница.

По поводу изучения этой темы - тебя ждет большой взрыв говна!!! Так как идеально все функции локализации реализованы в среде Visual Studio (ну может еще гдето). В остальном получишь непонятки.
Yandex
Объявления
12.08.2013, 22:44     Кракозябры в консоли - почему?
Ответ Создать тему
Опции темы

Текущее время: 23:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru