Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Программы с русским текстом выводятся в консоль некорректно

Автор: artiyom
Дата сообщения: 25.05.2007 11:51
Ситуация такая. Я только начал изучать программирование. И в программах, которые я пишу всегда фигурирует функция printf() (язык С). Так вот все мои программы выводят свой результат в консоль Windows, но проблема в том, что в какой бы кодировке я ни хранил исходники, русский текст в консоли никогда не отображается корректно. Я перепробовал с десяток кодировок, в том числе KOI8-R и Windows-1254, но результат в консоли всегда нечитаем, всегда вместо русского текста, какая-то белиберда.
Я слышал, что нужно конвертировать исходник из ANSI в OEM, я сдлал это при помощи утилиты fconvert.exe из компилятора Borland, но не помогло. Так вот подскажите, что нужно сделать, чтобы русский текст нормально выводился в консоль.
IDE: Code::Blocks, компилятор Borland, Windows XP.
Автор: ShriEkeR
Дата сообщения: 25.05.2007 23:50
artiyom

Цитата:
Так вот подскажите, что нужно сделать

можно обратиться в соответствующий раздел Прикладное программирование

каким отбразом предполагается получить русский язык из турецкой кодировки Windows-1254?
русская то в Windows 1251, хотя вам больше подойдёт OEM 866 (Russian)

Автор: artiyom
Дата сообщения: 26.05.2007 11:34
ShriEkeR

Цитата:
Windows-1254?
русская то в Windows 1251

Я спутал цифру, имел ввиду 1251.

Цитата:
можно обратиться в соответствующий раздел Прикладное программирование

Мне хотелось бы решить это проблему настроив что-либо в виндовс или самой консоли, а не средствами языка, по этому я решил написать сюда.
Автор: ShriEkeR
Дата сообщения: 26.05.2007 11:43
artiyom
_даю на водку_:
http://forum.ru-board.com/topic.cgi?forum=33&topic=4227&start=280#15
используй фильтр в вышеуказанном разделе.
Автор: artiyom
Дата сообщения: 28.05.2007 10:30
В теме программирования сказали что "вопрос для ОСей".
Так что повторяю вопрос. Как можно настроить консоль, чтобы она отображала русский текст?
Я пробовал через mode con cp SELECT=1251, но во первых реально кодировка там не меняется, ибо даже после этого программы с русским текстом на 1251 не читаются, и во вторых эта команда работает только на время одного сеанса.
Автор: XPEHOMETP
Дата сообщения: 28.05.2007 16:24
В консоль текст выводится в ДОС-овской ОЕМ-кодировке, точнее, OEM 866 (Russian) (ShriEkeR уже на это прозрачно намекал). Стало быть, решить проблему можно так:

1. Пишем русский текст в кодировке ANSI, чтобы нормально читалось в среде программирования, сразу после этого конвертируем в ОЕМ. Конвертировать можно, к примеру, стандартной функцией Винды CharToOemA, она сидит в USER32.DLL.

2. Пишем весь русский текст в кодировке ОЕМ в каком-нибудь достаточно умном текстовом редакторе (вроде BRED), меняем тексту кодировку на ANSI (получаем кракозябры), копируем эти кракозябры в среду программирования и компилируем - в консоли все будет нормально. Но так не очень удобно.

3. Настраиваем среду программирования, чтобы она использовала шрифт Lusida Console. Шрифт пишет в кодировке OEM, причем нормально читаемыми в Винде символами. Оптимальный вариант (если удастся настроить шрифт, конечно).


Автор: artiyom
Дата сообщения: 28.05.2007 18:04
XPEHOMETP

Цитата:
1. Пишем русский текст в кодировке ANSI, чтобы нормально читалось в среде программирования, сразу после этого конвертируем в ОЕМ. Конвертировать можно, к примеру, стандартной функцией Винды CharToOemA, она сидит в USER32.DLL.

Я так и делаю, пишу текст в своем ИДе, потом конвертирую его при помощи утилиты из Борланда, затем компилирую полученную белиберду. Как вы сами заметили это не очень удобно.
По этому мой вопрос звучал так: как сделать, чтобы в консоли выводился текст написанный на 1251 или KOI8-R.
Что касается указанного вами шрифта, то в моем ИДЕ он был, я открыл файл на 866 но он по прежнему был нечитаем.
Автор: XPEHOMETP
Дата сообщения: 28.05.2007 21:30
Ну, не знаю. Я сам 3-й вариант никогда не использовал, просто читал где-то, что он помогает. А вывод в консоль всегда будет в ОЕМ, а не в Виндовской кодировке или же в KOI8. Тут, по-моему, ничего сделать не реально. Разве что искать какую-то стороннюю библиотеку, которая делала бы нормальные Виндовские окна, которые работали бы как консольные (ловили стандартный вывод). Звучит несколько нелепо, но такие вещи делаются, например, в Compaq Visual Fortran.
Автор: artiyom
Дата сообщения: 28.05.2007 23:27
XPEHOMETP
Ясно. Буду икать решение дальше или таки придеться вводить все на англи либо конвертировать.

Страницы: 1

Предыдущая тема: от Vista Basic до Vista Ultimate


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.