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

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

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

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

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

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

Сделать, чтобы в консоли отображались русские буквы, а не кракозябры - 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++
Всем привет! Недавно начал изучать С++ и столкнулся с проблемой при создании калькулятора. Если в консоли ввести вместо числа любой...

3
no_wearines
53 / 49 / 2
Регистрация: 01.01.2012
Сообщений: 332
12.08.2013, 22:26 #2
по поводу почему не работает или не поддерживает - вам ответит Borland либо microsoft и т.д. А функция setlocale - устанавливает правила форматирования текста для различных регионов. Например: символ десятичной точки, символ для разделения группы цифр, знак местной денежной еденицы и т.д.
0
reisal78
667 / 580 / 137
Регистрация: 28.04.2013
Сообщений: 1,654
12.08.2013, 22:35 #3
Мне тоже интересна эта тема.
А какие отличия если скажем вместо (LC_ALL, "Russian") я укажу (LC_ALL, "") или (LC_ALL, "Rus")?
я так понимаю что как раз в десятичной точке и тд?
0
no_wearines
53 / 49 / 2
Регистрация: 01.01.2012
Сообщений: 332
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 (ну может еще гдето). В остальном получишь непонятки.
1
12.08.2013, 22:44
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; ...

Клавиши F1-F12 в консоли, и работа с мышкой в консоли - C++
Я искал на сайте, но не нашел упоминания о том как обрабатывать и или узнавать где находится курсор мышки (и еще мне надо бы узнать нажатие...

считывание с консоли ( не с клавы, а именно с консоли) - C++
нужно написать функцию которая возвращает string в котором написано 500 символов которые были выведены в консоли от начала. среда :...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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