Поддержка русского языка

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Поддержка русского языка

Сообщение AnnaNsk » 08.11.2015 09:06:57

Добрый день!
Подскажите, установлен FPC 2.6.4 при написании программы в операторе writeln используем русский текст. (writeln('Привет'))
В консольном окне русский не отображается, а всякие "крякозябры". (смотри вложение)
Как это обойти? Надо, чтобы поддерживался вывод русских букв.
Спасибо.
Вложения
123.JPG
123.JPG (10.72 КБ) Просмотров: 3431
AnnaNsk
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.11.2015 09:00:41

Re: Поодержка русского языка

Сообщение Zhbr » 08.11.2015 13:13:45

Какая ОС?
В данном модуле есть процедуры конвертации строк, попробуй http://freepascal.org/docs-html/rtl/system/index-5.html
Zhbr
новенький
 
Сообщения: 44
Зарегистрирован: 31.01.2014 02:34:21

Re: Поодержка русского языка

Сообщение AnnaNsk » 08.11.2015 14:58:03

Win8
AnnaNsk
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.11.2015 09:00:41

Re: Поодержка русского языка

Сообщение vitaly_l » 08.11.2015 16:43:17

AnnaNsk писал(а):Win8

Код: Выделить всё
writeln( UTF8ToSys( 'Привет!' ) ); // попробуйте, и будет Вам счастье, скорее всего.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3065
Зарегистрирован: 31.01.2012 16:41:41

Re: Поодержка русского языка

Сообщение Vadim » 08.11.2015 17:59:41

AnnaNsk
А в чём Вы исходный код программы пишете?
Vadim
долгожитель
 
Сообщения: 2616
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Поодержка русского языка

Сообщение gvido » 08.11.2015 20:14:57

В windows 7 в консольных приложениях использую
Код: Выделить всё
writeln(utf8toconsole('Приветик'));
Так как кодировка консоли по умолчанию 866.
gvido
постоялец
 
Сообщения: 174
Зарегистрирован: 28.03.2012 11:35:31

Re: Поодержка русского языка

Сообщение AnnaNsk » 08.11.2015 20:49:25

А в чём Вы исходный код программы пишете?
Может, не совсем поняла вопрос. На Pascal. Использую IDE FreePascal. Вы это имели ввиду?
writeln( UTF8ToSys( 'Привет!' ) ); // попробуйте, и будет Вам счастье, скорее всего. writeln(utf8toconsole('Приветик'));
при компиляции выдается следующая ошибка

Добавлено спустя 55 секунд:
Ошибка во вложении
Вложения
122.JPG
AnnaNsk
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.11.2015 09:00:41

Re: Поодержка русского языка

Сообщение скалогрыз » 08.11.2015 22:58:03

попробуй так:
Код: Выделить всё
uses Windows;
begin
   SetConsoleOutputCP(1251);
   writeln('Привет!');
   writeln('Ответ: ',2+2);
end.
скалогрыз
долгожитель
 
Сообщения: 1645
Зарегистрирован: 03.09.2008 02:36:48

Re: Поодержка русского языка

Сообщение SSerge » 09.11.2015 06:37:07

gvido писал(а):Так как кодировка консоли по умолчанию 866.


Ага, если не учитывать, что текстовое IDE в принципе не работает с кодировкой UTF-8, тем более под windows... то тоже себе метод.

vitaly_l
см. 1) примечание выше 2) функция lazarus, недоступная без прямого подключения соответствующего unit.

ЗЫ: я могу сказать, как будет идеологически правильно, но компилятор должен быть 2.7.х - 3.х, в ранних это не поддерживается

Кстати, метод уважаемого Скалогрыза в предыдущем посте вполне работоспособен.
SSerge
энтузиаст
 
Сообщения: 809
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Поодержка русского языка

Сообщение AnnaNsk » 09.11.2015 06:58:31

Методе скалогрыза привел вот к чему:

Добавлено спустя 16 минут 53 секунды:
Компилятор вот такой

Добавлено спустя 1 минуту 1 секунду:
Lazarus у нас нет
Вложения
113.JPG
111.JPG
AnnaNsk
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.11.2015 09:00:41

Re: Поодержка русского языка

Сообщение скалогрыз » 09.11.2015 07:45:04

AnnaNsk писал(а):Методе скалогрыза привел вот к чему:

какая жесть!

а если вот так попробовать:
Код: Выделить всё
uses Windows;
begin
   SetConsoleOutputCP(1251);
   writeln('Привет!');
   writeln('Ответ: ',2+2);
   SetConsoleOutputCP(866);
end.
скалогрыз
долгожитель
 
Сообщения: 1645
Зарегистрирован: 03.09.2008 02:36:48

Re: Поодержка русского языка

Сообщение SSerge » 09.11.2015 07:53:01

скалогрыз писал(а):какая жесть!


Там, возможно, для консоли подгружен несистемный русификатор, нечто вроде kb.com/rk.com или другой такой же кривой. В этом случае при смене видеорежимов, кодовой страницы и пр., windows переписывает его знакогенератор и получается продемонстрированная хрень. Любят этот rk криворукие одмины! :mrgreen: Хотя, уже во времена DOS он был одним из самых кривых.

Добавлено спустя 12 минут 23 секунды:
AnnaNsk
Вот это, пожалуйста, запустите:

Код: Выделить всё
program my_program;

uses Windows;
     var s:string;
         i,c:integer;
         cp:integer;
begin
   cp:=GetConsoleOutputCp;
   writeln('Current code page=',cp);
   SetConsoleOutputCP(1251);
   writeln('Current code page=',GetConsoleOutputCp);
   s:='Привет!';
   writeln(s);
   for i:=1 to length(s) do
     write(ord(s[i]):8);
   writeln;
   writeln('Ответ: ',2+2);
   SetConsoleOutputCP(cp);
   writeln('Current code page=',GetConsoleOutputCp);
end.



при правильном отрабатывании должная вывести следующее (если исходник в cp1251):
Код: Выделить всё
C:\>my_program.exe
Current code page=866
Current code page=1251
Привет!
     207     240     232     226     229     242      33
Ответ: 4
Current code page=866
SSerge
энтузиаст
 
Сообщения: 809
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Поодержка русского языка

Сообщение AnnaNsk » 09.11.2015 08:40:09

ЧТо-то ничего не вышло((( Ужас какой-то.
Да и трудно будет детям объяснить как сделать, чтобы русский пошёл (особенно на первых уроках. Тем кто еще не знает про программирования.). Придеьтся опять использовать ABCPascal. А другим, кто захочет Free использовать рекомендовать писать на латинице.
AnnaNsk
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.11.2015 09:00:41

Re: Поодержка русского языка

Сообщение SSerge » 09.11.2015 08:53:29

AnnaNsk
Вы мой код запускали? Что он вывел?
SSerge
энтузиаст
 
Сообщения: 809
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Поодержка русского языка

Сообщение gvido » 09.11.2015 12:49:41

AnnaNsk, исходник в какой кодировке? Если приложение запускается в среде windows xp - Windows 7, то русский нужно приводить к кодировке 866.
Менять кодовую страницу консоли в сеансе приложения - тоже вариант. Но лучше перекодировать, как извратный вариант - сменить кодировку исходника.
gvido
постоялец
 
Сообщения: 174
Зарегистрирован: 28.03.2012 11:35:31

След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru