Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 17:57   #1
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию Си. Русский язык в консоле.

есть многомодульная прога, вся работа в консоле, так вот через консоль вводятся некоторые данные на русском языке, а потом заместо них выводятся иероглифы
setlocale(LC_ALL, "RUSSIAN"); прописал и в main и в функции вывода, но не помогло странно, ведь setlocale(LC_ALL, "RUSSIAN"); всегда прокатывало...
NewLamer&Programer вне форума Ответить с цитированием
Старый 25.05.2013, 18:00   #2
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

Вместо setlocale(LC_ALL, Russian); напиши
Код:
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
И еще в консоле надо поменять шрифт на Lucida Console

Последний раз редактировалось Stilet; 26.05.2013 в 11:25.
revizor вне форума Ответить с цитированием
Старый 25.05.2013, 18:52   #3
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от revizor Посмотреть сообщение
Вместо setlocale(LC_ALL, Russian); напиши
Код:
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
даже то что было русским, стало иероглифами...
NewLamer&Programer вне форума Ответить с цитированием
Старый 25.05.2013, 22:30   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Есть альтернативное предложение: всю работу с консолью делать исключительно в 866 странице (Win OEM).
s-andriano вне форума Ответить с цитированием
Старый 26.05.2013, 07:16   #5
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Есть альтернативное предложение: всю работу с консолью делать исключительно в 866 странице (Win OEM).
что это и как это?

п.с. лучше объясните мне кто нибудь почему не прокатывает setlocale? все лабы делал работало, а в курсовой никак где его еще написать? есть main, есть h-ник, есть модули с функциями, в одном из модулей лежит функция которая опрашивает у юзера данные для бд, в другом функция которая выводит эти (и другие) данные на экран, так вот эта вторая функция выводит крякозябры если писал на русском

Последний раз редактировалось NewLamer&Programer; 26.05.2013 в 07:20.
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.05.2013, 07:25   #6
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
лучше объясните мне кто нибудь почему не прокатывает setlocale?
Потому что она действует не на все функции... например, на cout
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 26.05.2013, 08:00   #7
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Ezhik Kihze, cout? это что то из C++? мы учим чистый Си, ничего из С++ не используется
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.05.2013, 10:07   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
что это и как это?

п.с. лучше объясните мне кто нибудь почему не прокатывает setlocale?
Этому есть, минмиум, две причины:
1. По чьему-то злому умыслу (вероятно, Майкрософт) для русского языка в Windows используются две различные кодировки - одна для оконных приложений, другая - для консольных. Иначе как диверсией я это назвать не могу, но факт остается фактом: ситуация, когда при правильно установленной локали на экране появляются кракозябры, была запланирована разработчиком.

2. Пусть у Вас есть файл с рассказом на английском языке. Как Вы думаете, достаточно ли установить русскую локаль, чтобы читать тот же файл на русском языке? Это к тому, что установка локали в принципе неспособнна решать некоторые проблемы.
Цитата:
все лабы делал работало, а в курсовой никак где его еще написать? есть main, есть h-ник, есть модули с функциями, в одном из модулей лежит функция которая опрашивает у юзера данные для бд, в другом функция которая выводит эти (и другие) данные на экран, так вот эта вторая функция выводит крякозябры если писал на русском
По сути дела ситуация такова:
- либо Вы делаете интерфейс на английском языке, либо Вам придется разбираться с кодировками и контролировать, в каком месте что Вы вводите и в какой именно кодировке.
s-andriano вне форума Ответить с цитированием
Старый 26.05.2013, 10:45   #9
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

s-andriano, на английском не вариант, делаю бд в консоли (курсовая), объяснил же... данные ввводятся с клавы и выводятся на экран (все в консоле), ну скажите мне просто что и где прописать чтобы был русский язык??? пусть не setlocale, а что то другое, но хоть что нибудь...

Цитата:
Сообщение от revizor Посмотреть сообщение
И еще в консоле надо поменять шрифт на Lucida Console
сейчас еще раз попробовал, вручную поменял шрифт стало нормально, но подскажите тогда как сделать чтобы программа сама меняла шрифт консоли? чтобы не менять на других компьютерах, видимо что то должно быть с system, потому что вот например мне кто то тоже показывал system("mode con cols=137 lines=50"); менять размер консоли, а шрифт как?

Последний раз редактировалось Stilet; 26.05.2013 в 11:27.
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.05.2013, 11:00   #10
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

Цитата:
как сделать чтобы программа сама меняла шрифт консоли?
Этого я не знаю. Понимаю, что неудобно, но приходится самому менять этот шрифт
revizor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Русский язык в консоле Vadiliy Общие вопросы C/C++ 4 18.12.2012 20:55
Русский язык Dima-War Общие вопросы C/C++ 12 06.11.2012 19:40
C++ на русский язык fkorto Общие вопросы C/C++ 6 29.04.2010 15:12
Русский язык Sanek_ntsk Общие вопросы C/C++ 9 06.03.2008 16:50
Русский язык [Smarik] Паскаль, Turbo Pascal, PascalABC.NET 7 01.02.2008 22:58