печатаем русские буквы в текстовой консоли windows
+2
DEPOzit
electrik
Участников: 6
FreeBasic :: Программирование :: Общее
Страница 1 из 1
печатаем русские буквы в текстовой консоли windows
когда-то на этом форуме обсуждалась проблема вывода русских букв в консоль windows.
я хотел найти эту тему и посмотреть решон ли вопрос. поисковик тут странно работает. просто под руки попалось, решил поделиться.
ладно, мой вариант.
представим, что мы пишем код в кодировке 1251, соответственно, чтобы вывести русский текст в консоль, нужно переконвертировать строковую переменную в oem866.
зачем лишние затраты, когда есть средства для смены кодировки консоли.
почитать можно:
http://vsokovikov.narod.ru/New_MSDN_API/Console/fn_setconsolecp.htm
от туда будут переходы на другие функции.
я хотел найти эту тему и посмотреть решон ли вопрос. поисковик тут странно работает. просто под руки попалось, решил поделиться.
ладно, мой вариант.
представим, что мы пишем код в кодировке 1251, соответственно, чтобы вывести русский текст в консоль, нужно переконвертировать строковую переменную в oem866.
зачем лишние затраты, когда есть средства для смены кодировки консоли.
- Код:
#include "windows.bi"
' выясним текущую кодовую страницу ввода консоли
print "console code page is "; GetConsoleCP()
' получим кодовую страницу вывода данных консоли
print "console output code page is ";GetConsoleOutputCP()
' установим текущую кодовую страницу ввода консоли
SetConsoleCP(1251)
' установим кодовую страницу вывода данных консоли
SetConsoleOutputCP(1251)
' напечатаем русский текст в кодировке 1251
print "ты крут! по-русски в консоли кодировкой 1251 пишешь."
sleep
почитать можно:
http://vsokovikov.narod.ru/New_MSDN_API/Console/fn_setconsolecp.htm
от туда будут переходы на другие функции.
electrik- Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 43
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург
Re: печатаем русские буквы в текстовой консоли windows
Тема поднималась в этой ветке, только всеже там шла речь про графический режим.
А по поводу твоего примера - у меня что-то все-равно выводятся кракозябры
А по поводу твоего примера - у меня что-то все-равно выводятся кракозябры
Re: печатаем русские буквы в текстовой консоли windows
опа, правда. вообще странный глюк.
просто я пользуюсь читалкой экрана, а ей видимо пофиг, она нормально читает.
блин, хреново. а ведь api есть, для чего тогда? ладно могло в windows xp глючить, дык в семерке та же фигня.
просто я пользуюсь читалкой экрана, а ей видимо пофиг, она нормально читает.
блин, хреново. а ведь api есть, для чего тогда? ладно могло в windows xp глючить, дык в семерке та же фигня.
electrik- Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 43
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург
Re: печатаем русские буквы в текстовой консоли windows
Да не каких глюков нет, меняйте шрифт в свойствах консоли на тот, что поддерживает кириллицу. Я уже писал об этом ЗДЕСЬ
trew- Сообщения : 331
Дата регистрации : 2010-10-14
Re: печатаем русские буквы в текстовой консоли windows
Пожалуйста, не делайте всяких конвертаций в 1251.
Оператор Print нормально работает с юникодными строками типа WString.
Оператор Print нормально работает с юникодными строками типа WString.
Re: печатаем русские буквы в текстовой консоли windows
Всем привет! Смотрю это FB сообщество немногочисленное, а жаль
Тоже возился некогда с кодировкой
Вот способ. Не судите строго. Для экспериментаторов, новичков, для своих мелких непрофессиональных программ, у кого устаревшие системы
Не надо юникода, не надо шрифты менять, ничего такого. На стандартных установках ХР 32-бит работает.
Первый параметр указатель на строку, второй не обязательный, если задать ноль то не переходит на новую строку.
Тоже возился некогда с кодировкой
Вот способ. Не судите строго. Для экспериментаторов, новичков, для своих мелких непрофессиональных программ, у кого устаревшие системы
Не надо юникода, не надо шрифты менять, ничего такого. На стандартных установках ХР 32-бит работает.
Первый параметр указатель на строку, второй не обязательный, если задать ноль то не переходит на новую строку.
- Код:
#Include Once"windows.bi"
Sub RUSPrint(s As zString Ptr,newline As Long=1)
Dim As ZString*10000 t=Any
Dim As Long x=Any,c=Any,e
If s Then 'проверка что указатель<>0, не нужна если вы уверены что передаёте правильный параметр
'собственно конвертация кодировки
Do
For x=0 To 9996
c=Peek(s)
Select Case c
Case Is>239:c-=16
Case Is>191:c-=64
Case 168:c=240
Case 184:c=241
Case 0:If newline Then Poke word,@t[x],2573:x+=2 'завершение строки CRLF
e=1:Exit For
End Select
t[x]=c
s+=1
Next
t[x]=0
'обычный WinAPI "Print"
WriteConsole GetStdHandle(-11),@t,x,@c,0
Loop Until e
EndIf
End Sub
'Примеры использования. Варианты типа первого параметра, FB сам передаёт в всех случаях zString Ptr:
RUSPrint "Русские буквы OK!" 'просто строка
Dim As zString*20 s="abcDEF абвГДЕ"
RUSPrint s 'переменная обычный символьный массив
Dim As String st
st="qwErTy йцУкЕн 1234567890+-=\/.,_()"
RUSPrint st 'переменная тип с динамически выделяемой памятью
Sleep 'конец программы, ожидание нажатия кнопки, закрытия консоли
Somerick- Сообщения : 1
Дата регистрации : 2016-07-21
Re: печатаем русские буквы в текстовой консоли windows
Somerick
Замабувараев прав, вот
Так
А вообще никогда не понимал, что это за проблема - выводить кириллицу. Где это нужно в реальных программах?
Сроду с такой задачей не сталкивался.
А вот, например, вывод полноценого юникода в гуи - да. Сейчас любой браузер, плеер, текстовый редактор и т.д. должен отображать те же иероглифы, иначе программа будет конкурентоспособна.
Замабувараев прав, вот
Так
- Код:
? WStr("русский")
Sleep
А вообще никогда не понимал, что это за проблема - выводить кириллицу. Где это нужно в реальных программах?
Сроду с такой задачей не сталкивался.
А вот, например, вывод полноценого юникода в гуи - да. Сейчас любой браузер, плеер, текстовый редактор и т.д. должен отображать те же иероглифы, иначе программа будет конкурентоспособна.
TQPO- Сообщения : 4
Дата регистрации : 2014-04-24
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|