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

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

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

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

Сообщение SSerge »

Давайте так: вы свою откомпилированную программу (файл .exe) запустите пожалуйста минуя средства lazarus.
У lazarus с консолями, похоже, проблема. То, что он генерирует из своей среды исполнения, русский язык отрабатывает неправильно.
то есть, найдите ваш файл .exe в Проводнике windows и ткните в него. Получите обратную картину - у вас то что вводится будет печаться правильно, а то что генерируется программой - скорее всего нет. И тогда поменяйте кодироку исходного файла на utf-8. Правой кнопкой в редакторе лазаруса - параметры файла - кодировка.
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

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

Попробовал запустить экзешник в проводнике.Всё то же самое,изменений нет.Текст вводится криво.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

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

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

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

выбрал точечные шрифты.Ничего не изменилось.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

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

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

Да пробовал,всё нормально.
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

Модуль CRT используется? Он бажный. Устанавливает только SetConsoleOutputCP, но не SetConsoleCP, оттого и иероглифы.
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

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

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

вообще никаких модулей не использую.
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

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

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

Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

Я же сказал:

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

{$APPTYPE CONSOLE}

uses
  Windows;

begin
  SetConsoleCP(GetConsoleOutputCP);
  WriteLn('Введите текст');
  ReadLn;
end.
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

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

Без изменений. :(
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

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

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

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

Всё так же без изменений.Что за фигня-то?У других я понимаю такой проблемы нет.
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

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

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

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

Если проблема не решится, выкладывайте полный тестовый проект, демонстрирующий её.
Ответить