Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
NUBISHe
0 / 0 / 1
Регистрация: 02.04.2013
Сообщений: 9
1

Русские символы выводятся некорректно

03.04.2013, 23:02. Просмотров 2252. Ответов 12
Метки нет (Все метки)

Добрый день!Начинаю изучение С но не понимаю почему русский язык не распознает?
Уважаемые форумчане объясните в чем дело? Заранее спасибо!
0
Миниатюры
Русские символы выводятся некорректно  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 23:02
Ответы с готовыми решениями:

Не выводятся русские буквы
написал код в viual studio 2008 и не как не могу разобраться почему не выводит русские буквы...

Не выводятся русские буквы
Подскажите пожалуйста что добавить в программу написанную на visual studio 2008 #include...

На консоль выводятся ненужные символы
Помогите плз найти,что не так,хочу вывести строку b,в которую скопировал символы из s до 2 пробела....

Вывести символы из файла. Выводятся не все
Есть файл с таким содержанием: $ђЇђ| їµ|{#є . Требуется просто считать от туда эту строку...

Вместо текста, выводятся какие-то символы
Написал простую программку по выводу текста и одной переменной, как положено скомпилировал её и...

12
ComputerMouse
6 / 6 / 4
Регистрация: 06.11.2012
Сообщений: 254
03.04.2013, 23:16 2
http://kocha.co/v5o/
А дело в том, что для кодировки русского текста требуется 2 байта. А консоль использует один. Вот и печаль получается - символы странные.
0
palva
3228 / 2329 / 482
Регистрация: 08.06.2007
Сообщений: 8,396
Записей в блоге: 4
03.04.2013, 23:20 3
Распознает. Просто у вас в программе кодировка русских символов Windows 1251, а консоль считает, что кодировка русских букв cp-866. Перекодируйте константы в программе каким-нибудь текстовым редактором и все войдет в норму.
0
ComputerMouse
6 / 6 / 4
Регистрация: 06.11.2012
Сообщений: 254
03.04.2013, 23:22 4
Кстати это не C. Ну никак.
C++
1
#include <iostream> //С++
C++
1
2
#include <cstdlib>    //Тоже чистый C++
using namespace std;//Причём тут он не нужен
Добавлено через 1 минуту
Цитата Сообщение от palva Посмотреть сообщение
Распознает. Просто у вас в программе кодировка русских символов Windows 1251, а консоль считает, что кодировка русских букв cp-866. Перекодируйте константы в программе каким-нибудь текстовым редактором и все войдет в норму.
Зачем? CharToOem() на что? К тому же всё равно не уверен.
0
03.04.2013, 23:22
palva
3228 / 2329 / 482
Регистрация: 08.06.2007
Сообщений: 8,396
Записей в блоге: 4
03.04.2013, 23:36 5
Цитата Сообщение от ComputerMouse Посмотреть сообщение
Зачем? CharToOem() на что?
Я разве предлагал CharToOem() ?
Запишите константы в правильной кодировке и все будет правильно выводиться.
C
1
2
printf("Я - простой ") \\ заменить на
printf("_ - ЇаRбвRc ")
Не знаю, передаст ли форум правильно эти символы.
0
ComputerMouse
6 / 6 / 4
Регистрация: 06.11.2012
Сообщений: 254
03.04.2013, 23:39 6
Передал. Каждый раз так мучиться?
Я предлагаю CharToOem() как нормальный вариант решения проблемы.
0
palva
3228 / 2329 / 482
Регистрация: 08.06.2007
Сообщений: 8,396
Записей в блоге: 4
03.04.2013, 23:49 7
Один раз перекодировать перед окончательной компиляцией и всё. Но это вариант для промышленной программы. А для учебных программ, если не жалко тратить время на перекодировку во время выполнения программы, то имеется много разных вариантов и они много раз обсуждались. Русские шрифты в консоли
0
ComputerMouse
6 / 6 / 4
Регистрация: 06.11.2012
Сообщений: 254
03.04.2013, 23:51 8
Вариант для промышленной программы
Как раз наоборот, чем более "промышленная" программа, тем больше текста, чем больше текста тем дольше и муторней перекодировать. ИМХО, это дольше чем сделать это во время компиляции.
0
palva
3228 / 2329 / 482
Регистрация: 08.06.2007
Сообщений: 8,396
Записей в блоге: 4
04.04.2013, 00:47 9
Цитата Сообщение от ComputerMouse Посмотреть сообщение
это дольше чем сделать это во время компиляции.
Если поставить CharToOem в программу, то перекодировка будет не во время компиляции, а при работе. Причем придется перекодировать каждую константу отдельным вызовом CharToOem. А перекодировка редактором идет один раз на весь исходный файл.
1
ComputerMouse
6 / 6 / 4
Регистрация: 06.11.2012
Сообщений: 254
04.04.2013, 00:53 10
Цитата Сообщение от palva Посмотреть сообщение
Если поставить CharToOem в программу, то перекодировка будет не во время компиляции, а при работе. Причем придется перекодировать каждую константу отдельным вызовом CharToOem. А перекодировка редактором идет один раз на весь исходный файл.
Если мы не принимаем во внимание миллисекунды это не так важно. Сам пробовал. К тому же при перекодировке так, как в Вашем примере читабельность кода сильно понижается.
1
palva
3228 / 2329 / 482
Регистрация: 08.06.2007
Сообщений: 8,396
Записей в блоге: 4
04.04.2013, 01:07 11
ComputerMouse, здесь согласен.
0
isaew999
5 / 13 / 1
Регистрация: 19.09.2012
Сообщений: 233
04.04.2013, 01:25 12
Просто вставь в код следующее

C
1
2
3
4
5
6
7
#include<clocale>
 
 
void main()
{   
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
И да будет тебе текст православный в консоли святейшей!!
1
NUBISHe
0 / 0 / 1
Регистрация: 02.04.2013
Сообщений: 9
04.04.2013, 11:20  [ТС] 13
Все решил!Спасибо всем воспользовался последним советом isaew999

Добавлено через 2 минуты
А почему я не могу сказать спасибо isaew999
0
04.04.2013, 11:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 11:20

Русские символы в консоли
Помогите, пожалуйста, я только начала учить си. int _tmain(int argc, _TCHAR* argv) {...

Ncurses и русские символы
Здравствуйте! Прохожу основы интерфейса, с библиотекой ncurses/ncursesw. Есть одна проблема, с...

Не отображаются русские символы
Сначала ввожу город printf(&quot;\nГород: &quot;);gets(list.address.town); Допустим в консоли написал Киев...


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

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

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