Иероглифы вместо русских букв.
Модератор: Модераторы
Давайте так: вы свою откомпилированную программу (файл .exe) запустите пожалуйста минуя средства lazarus.
У lazarus с консолями, похоже, проблема. То, что он генерирует из своей среды исполнения, русский язык отрабатывает неправильно.
то есть, найдите ваш файл .exe в Проводнике windows и ткните в него. Получите обратную картину - у вас то что вводится будет печаться правильно, а то что генерируется программой - скорее всего нет. И тогда поменяйте кодироку исходного файла на utf-8. Правой кнопкой в редакторе лазаруса - параметры файла - кодировка.
У lazarus с консолями, похоже, проблема. То, что он генерирует из своей среды исполнения, русский язык отрабатывает неправильно.
то есть, найдите ваш файл .exe в Проводнике windows и ткните в него. Получите обратную картину - у вас то что вводится будет печаться правильно, а то что генерируется программой - скорее всего нет. И тогда поменяйте кодироку исходного файла на utf-8. Правой кнопкой в редакторе лазаруса - параметры файла - кодировка.
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Попробовал запустить экзешник в проводнике.Всё то же самое,изменений нет.Текст вводится криво.
правой кнопкой мыши по заголовку консольного окна, свойства - шрифт, и уберите оттуда lucida console
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
SSerge писал(а):правой кнопкой мыши по заголовку консольного окна, свойства - шрифт, и уберите оттуда lucida console
выбрал точечные шрифты.Ничего не изменилось.
ну а без вашей программы, если открыть консоль (пуск - выполнить - cmd) и пытаться что-то печать русскими буквами в командной строке, символы правильно отображаются?
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Да пробовал,всё нормально.
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Vapaamies писал(а):Модуль CRT используется? Он бажный. Устанавливает только SetConsoleOutputCP, но не SetConsoleCP, оттого и иероглифы.
вообще никаких модулей не использую.
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
- Vapaamies
- постоялец
- Сообщения: 292
- Зарегистрирован: 24.07.2012 22:37:59
- Откуда: Санкт-Петербург
- Контактная информация:
Я же сказал:
Код: Выделить всё
{$APPTYPE CONSOLE}
uses
Windows;
begin
SetConsoleCP(GetConsoleOutputCP);
WriteLn('Введите текст');
ReadLn;
end.
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Без изменений. 
Paster Fob
Попробуйте поставить в начале программы:
{$CODEPAGE UTF8}
текст программы должен писаться в кодировке UTF8, в Lazarus это по умолчанию.
Попробуйте поставить в начале программы:
{$CODEPAGE UTF8}
текст программы должен писаться в кодировке UTF8, в Lazarus это по умолчанию.
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Vadim писал(а):Paster Fob
Попробуйте поставить в начале программы:
{$CODEPAGE UTF8}
текст программы должен писаться в кодировке UTF8, в Lazarus это по умолчанию.
Всё так же без изменений.Что за фигня-то?У других я понимаю такой проблемы нет.
Paster Fob писал(а):Всё так же без изменений.Что за фигня-то?У других я понимаю такой проблемы нет.
Проверяйте кодировку файла исходного кода (должна быть UTF-8). Правая кнопка мыши -> Параметры файла -> Кодировка.
Директив типа {$CODEPAGE UTF8} и вызовов SetConsoleCP(); в программе быть НЕ должно.
Если проблема не решится, выкладывайте полный тестовый проект, демонстрирующий её.
