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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
#1

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

11.08.2013, 21:22. Просмотров 677. Ответов 3
Метки нет (Все метки)

Добрый день. Почитав форум и статью про кодировки вообще я задался парой вопросов. Ладно, мне более менее ясно, почему возникают кракозябры (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++ Кракозябры при кодировании в JSON
C++ Кракозябры в MSVS 2013
Подскажете пожалуйста, почему при запуске консоли нет останова? C++
Сделать, чтобы в консоли отображались русские буквы, а не кракозябры C++
Русифицировать консоль (кракозябры вместо русских букв) C++
Кракозябры на экране C++
Неожиданное поведение программы: почему после каждой выведенной фразы в консоли появляются цифры? C++
C++ Почему если в консоли ввести вместо числа любой символ, программа впадает в бесконечный цикл?
C++ Почему-то при соответствующих нажатиях клавиш не выдает "Ошибка ввода" и просто закрывает экран консоли

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
12.08.2013, 22:26     Кракозябры в консоли - почему? #2
по поводу почему не работает или не поддерживает - вам ответит Borland либо microsoft и т.д. А функция setlocale - устанавливает правила форматирования текста для различных регионов. Например: символ десятичной точки, символ для разделения группы цифр, знак местной денежной еденицы и т.д.
reisal78
 Аватар для reisal78
611 / 524 / 122
Регистрация: 28.04.2013
Сообщений: 1,486
12.08.2013, 22:35     Кракозябры в консоли - почему? #3
Мне тоже интересна эта тема.
А какие отличия если скажем вместо (LC_ALL, "Russian") я укажу (LC_ALL, "") или (LC_ALL, "Rus")?
я так понимаю что как раз в десятичной точке и тд?
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
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     Кракозябры в консоли - почему?
Ответ Создать тему
Опции темы

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