Иероглифы вместо русских букв.

Вопросы программирования и использования среды Lazarus.

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

Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Иероглифы вместо русских букв.

Сообщение Paster Fob »

Ну вот установил Lasarus,попробовал написать что-нибудь,но вместо русских букв какие-то иероглифы.Вот к примеру.

Изображение

Почему так,или что-то надо настроить?
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Скорее всего в консоли не поддерживается UTF8. Попробуйте вывести как-то так:

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

writeln(UTF8ToConsole(s));
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

UTF8ToAnsi

или чтото такое для Dos кодировки
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Правой кнопкой мыши в редакторе. В меню выдираем пункт "Параметры файла->Кодировка->CP866".
Данная кодировка используется в консольных программах Windows.
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

Mr.Smart писал(а):Правой кнопкой мыши в редакторе. В меню выдираем пункт "Параметры файла->Кодировка->CP866".
Данная кодировка используется в консольных программах Windows.

Большое спасибо,теперь всё ништяк!
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

А по другим кодировкам можете что-нибудь расскакать,для чего они?
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

Как писать русскими буквами в Lazarus?
Изображение
mtdu
новенький
Сообщения: 31
Зарегистрирован: 22.11.2009 12:56:51

Сообщение mtdu »

В книге "Основы программирования в среде Lazarus" страница 70 написано подробно как быть.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

Следующий вопрос предвижу :D "почему это у меня не работают функции copy, delete, insert и вместо i-го символа строки получается какая-то хрень, а длина строки из трех русских букв почему равна шести?"

*подумал* и решил таки рекомендовать:

http://www.freepascal.ru/article/freepa ... 718142000/ - "Правильный" путь развития, по работе с русским языком, особенно в консоли, противоречащий 99% учебников по FreePascal, Pascal и Deplhi

И, "прикладная кадаврология", http://sirserge.altai.info/articles/?id=41 о том, как работать с русским языком "по старому пути развития", ведущему в тупик. Беллетристику аккуратно пропускаем мимо ушей, стиль написания там чернушный.

смотрите сами, стоит эти материалы применять или нет, написаны они отнюдь не для начинающих
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

mtdu писал(а):В книге "Основы программирования в среде Lazarus" страница 70 написано подробно как быть.

Меня интересует ввод русских букв(readln),а не вывод(writeln).Я устанавливаю кодировку CP866.Вывод букв корректный,а ввод нет.Я же выше привёл пример.Программа "просит" ввести предложение нормальным русским шрифтом.Я ввожу,но вместо корректного ввода что-попало.
Как вводить русские буквы в консольных приложениях?
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

Иллюстрация "старого подхода".
Внимание!!! Lazarus должен быть исключительно "официальный", релизный , функции преобразования в так называемых "последних" версиях на компиляторе 2.7.1 обычно испорчены до необратимого состояния. Файл - в кодировке UTF8.

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

program project1;
Uses FileUtil;

Var s1,s2,s3:UTF8String;

begin
   s1:='Введите предложение:';
   write(UTF8ToConsole(s1));
   readln(s2);
   s2:=ConsoleToUTF8(s2);
   s3:='Вы ввели:';
   writeln(UTF8ToConsole(s3),UTF8ToConsole(s2));
end.                                       


...вообще то лазарус не предназначен для работы с консолью.
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

SSerge писал(а):Иллюстрация "старого подхода".
Внимание!!! Lazarus должен быть исключительно "официальный", релизный , функции преобразования в так называемых "последних" версиях на компиляторе 2.7.1 обычно испорчены до необратимого состояния. Файл - в кодировке UTF8.

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

program project1;
Uses FileUtil;

Var s1,s2,s3:UTF8String;

begin
   s1:='Введите предложение:';
   write(UTF8ToConsole(s1));
   readln(s2);
   s2:=ConsoleToUTF8(s2);
   s3:='Вы ввели:';
   writeln(UTF8ToConsole(s3),UTF8ToConsole(s2));
end.                                       


...вообще то лазарус не предназначен для работы с консолью.


Lazarus v1.0.
результат:

Изображение
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

FreePascal какой? Должен быть 2.6.0

Добавлено спустя 5 минут 24 секунды:
что то не обратил внимание... У вас собственно что вводится, то и выводится, без искажений. Очень подозреваю ненормальные настройки консоли в рамках Windows (русификаторы какие нибудь и т.п.) Во всяком случае, русские буквы должны печататься как рксские буквы, когда вы их набираете, это к lazarus/freepascal отношения не имеет, это настройки и функции вашей операционной системы

Добавлено спустя 1 минуту 4 секунды:
Как до консоли добираетесь?
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

SSerge писал(а):Как до консоли добираетесь?

Создать проект=>программа
FPC 2.6.0
Lazarus официальный с сайта.
При вводе русских букв в FPC проблем нет.
Ответить