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

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

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

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

Сообщение SSerge » 15.11.2012 09:04:19

Давайте так: вы свою откомпилированную программу (файл .exe) запустите пожалуйста минуя средства lazarus.
У lazarus с консолями, похоже, проблема. То, что он генерирует из своей среды исполнения, русский язык отрабатывает неправильно.
то есть, найдите ваш файл .exe в Проводнике windows и ткните в него. Получите обратную картину - у вас то что вводится будет печаться правильно, а то что генерируется программой - скорее всего нет. И тогда поменяйте кодироку исходного файла на utf-8. Правой кнопкой в редакторе лазаруса - параметры файла - кодировка.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение Paster Fob » 15.11.2012 09:36:50

Попробовал запустить экзешник в проводнике.Всё то же самое,изменений нет.Текст вводится криво.
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

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

Сообщение SSerge » 15.11.2012 09:41:34

правой кнопкой мыши по заголовку консольного окна, свойства - шрифт, и уберите оттуда lucida console
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение Paster Fob » 15.11.2012 09:51:02

SSerge писал(а):правой кнопкой мыши по заголовку консольного окна, свойства - шрифт, и уберите оттуда lucida console

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

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

Сообщение SSerge » 15.11.2012 09:56:44

ну а без вашей программы, если открыть консоль (пуск - выполнить - cmd) и пытаться что-то печать русскими буквами в командной строке, символы правильно отображаются?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение Paster Fob » 15.11.2012 10:26:09

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

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

Сообщение Vapaamies » 15.11.2012 15:38:38

Модуль CRT используется? Он бажный. Устанавливает только SetConsoleOutputCP, но не SetConsoleCP, оттого и иероглифы.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Paster Fob » 15.11.2012 15:49:22

Vapaamies писал(а):Модуль CRT используется? Он бажный. Устанавливает только SetConsoleOutputCP, но не SetConsoleCP, оттого и иероглифы.

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

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

Сообщение Vapaamies » 15.11.2012 17:13:40

Тогда где-то в другом месте такой же глюк. Что, если вставить вызов SetConsoleCP(GetConsoleOutputCP) в самом начале программы?
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Paster Fob » 15.11.2012 18:27:02

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

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

Сообщение Vapaamies » 15.11.2012 18:50:51

Я же сказал:
Код: Выделить всё
{$APPTYPE CONSOLE}

uses
  Windows;

begin
  SetConsoleCP(GetConsoleOutputCP);
  WriteLn('Введите текст');
  ReadLn;
end.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Paster Fob » 15.11.2012 19:33:43

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

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

Сообщение Vadim » 15.11.2012 19:49:19

Paster Fob
Попробуйте поставить в начале программы:
{$CODEPAGE UTF8}
текст программы должен писаться в кодировке UTF8, в Lazarus это по умолчанию.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Paster Fob » 15.11.2012 22:02:57

Vadim писал(а):Paster Fob
Попробуйте поставить в начале программы:
{$CODEPAGE UTF8}
текст программы должен писаться в кодировке UTF8, в Lazarus это по умолчанию.

Всё так же без изменений.Что за фигня-то?У других я понимаю такой проблемы нет.
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

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

Сообщение Максим » 15.11.2012 23:43:20

Paster Fob писал(а):Всё так же без изменений.Что за фигня-то?У других я понимаю такой проблемы нет.

Проверяйте кодировку файла исходного кода (должна быть UTF-8). Правая кнопка мыши -> Параметры файла -> Кодировка.

Директив типа {$CODEPAGE UTF8} и вызовов SetConsoleCP(); в программе быть НЕ должно.

Если проблема не решится, выкладывайте полный тестовый проект, демонстрирующий её.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Пред.След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 229

Рейтинг@Mail.ru
cron