Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Русский шрифт в командной строке |
Автор: KARDAN 27.12.2005, 18:09 |
В Винде в командной строке - не коректно(абра-кадабра) отбражается русский шрифт(записаный в коде). Использую Microsoft Visual C++ 6.0(SP6). Где в настройках, можна изменить, чтоб русский определял коректно. За рание блогадарен. P.S. Я только учюсь, по Шилдту. Первое знакомство с C++. |
Автор: Chaos A.D. 27.12.2005, 18:16 |
Самый легкий вариант - возьми какой-нибудь текстовый редактор (лично я предпочитаю Bred), и переведи в нем твой русский текст в кодировку, в которой сохраняет текст твоя IDE. По-моему, у тебя это win1251. В коде твой текст будет выглядеть абракадаброй, а в консоли - все нормально. |
Автор: JoyEx 27.12.2005, 18:23 |
http://www.rsdn.ru/article/qna/ui/concp.xml |
Автор: KARDAN 28.12.2005, 09:52 | ||
Хотелось бы чтоб MV C++ всё обрабатывал автоматом. ![]() Добавлено @ 10:01 JoyEx ВЫХОД 3 - был самый заманчевый но всёравно не работает ![]() Кто-нибуть знает выход с этой ситуации. ![]() |
Автор: chaos 28.12.2005, 10:08 |
можно попробовать команду командного интерпретатора chcp пример: перевод в 1251 - chcp 1251 |
Автор: KARDAN 28.12.2005, 10:34 |
Забыл написать, на машине установлена Win2k. На картинке видно ввод команды - и вывод кадабры. Может ключ в реестре прописать(говорят помагает), что б в DOS-e кодеровку нормальло выводило. |
Автор: chaos 28.12.2005, 11:30 | ||
запускай так свою программу chcp 1251 | appname.exe и все у тебя получиться!!! Добавлено @ 11:34 или же при каждом выводе придется делать так: Пример:
|
Автор: Exekutor 28.12.2005, 13:48 |
все дело в том что в Windows и в Дос кодировки символов разные. Самый простой и легкий способ - это написать собственную функцию по переводу. Создай строку символов в которой будет содержаться текст, который ты желаешь вывести на экран. Создай функцию, которая будет получать строку и возвращать строку в качестве результата. В функции пропиши кодировки символов в винде и дос. Пусть функция меняет код каждого символа полученой строки (винда) на код символа возвращаемой строки строки (дос). Используй эту функцию во всех приложениях, в которых требуется вывод русского текста на экран консоли. |
Автор: chaos 28.12.2005, 13:58 | ||
нафиг изобретать велосипед? когда все уже есть CharToOem OemToChar |
Автор: Exekutor 28.12.2005, 14:13 |
использование каких-то шаблонов, особенно на этапе обучения, влечет к одному - незнанию, непониманию сути. Гораздо более интерестно и полезно - попробовать решить проблему самому. Конечно, если ты крутой профессионал, ты работаешь и твое время ограничено - изобретать велосипед не самое мудрое решение. |
Автор: KARDAN 28.12.2005, 15:48 |
Спосибо большое что откликнулись. Попробую все ваши предложеные варианты. И всётаки по средствам самой Visual Studio в настройках (на подобе Tools->Options->Format->Source Windows->Font) можно ли настроить, или надо использовать дополнительные програмки ![]() |
Автор: byNet 28.12.2005, 15:51 |
Как сделать в консоли руский язык в Builder C++ 5 |
Автор: _hunter 28.12.2005, 16:16 |
точно так же |
Автор: Alex007 29.12.2005, 23:30 | ||
Поставь себе Visual Studio 2005 Pro ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Автор: KARDAN 30.12.2005, 11:21 |
Там уже есть эта возможность? А можно скачать по инету? |
Автор: Alex007 30.12.2005, 12:18 | ||
По иннету можно скачать только бесплатную версию - Express Edition(урезаная версия), но спроси у кого-то может дадут пиратскую Professional ![]() ![]() ![]() ![]() |
Автор: GOLD 30.12.2005, 22:52 | ||||
Не знаю подойдет ли, но для печати по-русски в консольном приложении я написал такую функцию:
а потом
![]() |
Автор: Void 31.12.2005, 01:28 |
GOLD Оставляя в стороне сам подход к решению: а почему не воспользоваться strlen и strcpy вместо самописных циклов? Они, как правило, очень хорошо оптимизированы на уровне маш. кодов, там далеко не банальный цикл. |
Автор: Dov 31.12.2005, 01:52 | ||||
Может я чего-то не понял, тогда извинияюсь.
В окне вывода, в свойствах устанавливаешь шрифт Lucida Console. Всё. |
Автор: GOLD 31.12.2005, 06:35 | ||
Void Да уж! Я когда сюда вставил код, сам испугался ![]() Спасибо за замечание! Работает даже так:
|
Автор: SectoR 25.2.2006, 02:37 | ||
IMHO проще всего так:
|
Автор: AlexHHL 2.1.2007, 08:05 |
Приветствую! Вот вы пишите printf("%s",rus("Русский шрифт в консоли!")); и ещё куча примеров как в консольном приложении буквы РФ были видны, так а если в самом редакторе пишется абра-кадабра, я не вижу, что я написал русскими буквами. Настройки облазил с верху до низу!!! |
Автор: WERITAS 2.1.2007, 10:18 | ||||
А я писал для себя вот такую функцию печати русских слов и до сих пор ей пользуюсь:
Применение:
|
Автор: jonie 3.1.2007, 01:09 | ||
peshite translitom 8). Ну или что самое простое и надежное пишите в UNICODE (хотя можно и без него -- смотрите setlocale).
|
Автор: Kirill89 3.1.2007, 23:23 |
Я что - то путаю, или можно просто использовать CharToOem? |
Автор: WERITAS 3.1.2007, 23:37 | ||||
Вот тебе еще такой вариант с использованием MFC'шной строки (разумеется в Project Settings установишь Use MFC in Shared DLL):
Применение:
|
Автор: DarthGuyver 15.11.2009, 01:05 | ||
Вот потратил несколько дней чтоб догнать как русский текст в консоль выводит!!! Ниодин из способов выше не помог (CharToOem не пробовал)!!! Видел тут 2 человека выкладывали собственные функции, но у меня они тоже почемуто не попёрли! Вот написал свою функцию, кто буит пробовать. отпишитесь как она у вас пошла?
У меня заработала!! Теперь буду ей пользоваться!!! |
Автор: sdukshis 15.11.2009, 18:31 | ||
А разве подобное:
В Windows не работает? |
Автор: DarthGuyver 15.11.2009, 21:31 |
Неа!!! |
Автор: chaos 15.11.2009, 21:46 | ||
DarthGuyver,
![]() |
Автор: DarthGuyver 15.11.2009, 23:53 |
Ну мне не помогло!!! |
Автор: Dronchik 22.11.2009, 08:59 |
Лично я использовал всегда CharToOem. Имхо самое удобное для меня. Также естественно можно просто ставить юникод и спокойно писать русскими буквами))Способ в http://forum.vingrad.ru/index.php?showtopic=76084&view=findpost&p=601184 ихмо самый удобный) |