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

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

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

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

11.08.2013, 21:22. Просмотров 709. Ответов 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++
Собственно вместо русских букв выдает кракозябры. Шрифт Lucida. Как пофиксить? #include <stdio.h> #include <iostream> #include...

Почему введенное значение в консоли считывается только до пробела? - C++
Не могу прочитать строку полностью, считывает только до пробела, та самая ситуация с вводом в консоли. Использую масив char #include...

Подскажете пожалуйста, почему при запуске консоли нет останова? - C++
#include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <string> #include <map> #include <set> ...

Почему чтобы корректно отображались русские буквы в консоли, мало изменить кодировку - C++
Последнее-то что даёт? Имеем: printf ("sы");на выходе- s<кракозябр> а почему? смотрим, что у нас в экзешнике, там где должно быть "sы". А...

Неожиданное поведение программы: почему после каждой выведенной фразы в консоли появляются цифры? - C++
почему после каждой выведенной фразы в консоли появляются цифры? например, Введите значение а:1.4822е-323 и как...

Почему если в консоли ввести вместо числа любой символ, программа впадает в бесконечный цикл? - C++
Всем привет! Недавно начал изучать С++ и столкнулся с проблемой при создании калькулятора. Если в консоли ввести вместо числа любой...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
12.08.2013, 22:26     Кракозябры в консоли - почему? #2
по поводу почему не работает или не поддерживает - вам ответит Borland либо microsoft и т.д. А функция setlocale - устанавливает правила форматирования текста для различных регионов. Например: символ десятичной точки, символ для разделения группы цифр, знак местной денежной еденицы и т.д.
reisal78
647 / 560 / 132
Регистрация: 28.04.2013
Сообщений: 1,599
12.08.2013, 22:35     Кракозябры в консоли - почему? #3
Мне тоже интересна эта тема.
А какие отличия если скажем вместо (LC_ALL, "Russian") я укажу (LC_ALL, "") или (LC_ALL, "Rus")?
я так понимаю что как раз в десятичной точке и тд?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2013, 22:44     Кракозябры в консоли - почему?
Еще ссылки по теме:

Почему-то при соответствующих нажатиях клавиш не выдает "Ошибка ввода" и просто закрывает экран консоли - C++
#include "stdafx.h" #include <iostream> #include <stdlib.h> using namespace std; struct AUZ { char *name; double GPU; ...

Кракозябры на экране - C++
Вместо того, чтобы очистить поток и вывести введённую строку выводит кучу кракозябр сразу после текста (писал англ.буквами) #include...

Кракозябры в MSVS 2013 - C++
http://www.fayloobmennik.net/4745741 проект, кракозябры везде, нажал файл - доп параметры сохранения - выбрал кирилицу дос 866 -...

Кракозябры при кодировании в JSON - C++
Всем привет. Имеется следующая небольшая функция. void class_socket_connect::index_interface() { ptree pt,pt_out,...

В заголовоке окна кракозябры, да и на компонентах тоже - C++
Начал работу с примерами с firststep для MFC Столкнулся с проблеммой: Английский заголовок окна выводится на китайском. Как...

Русифицировать консоль (кракозябры вместо русских букв) - C++
Я начинающий в С++. Вопрос такой: почему вместо того что вводишь с клавиатуры, выводится совсем не то? Вот код: #include...


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

Или воспользуйтесь поиском по форуму:
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     Кракозябры в консоли - почему?
Ответ Создать тему
Опции темы

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