AProcess.Output кирилицей

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

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

Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

AProcess.Output кирилицей

Сообщение Ustas »

Доброго дня!
Windows 10, Lazarus 3.4.

Написал процедуру запуска внешних программ, используя TProcessUTF8.
Запускаю батники. Как получить результат выполнения в AProcess.Output кириллицей?
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Как вариант: переключить вывод в консоль у bat файла в UTF8
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

xchgeaxeax писал(а):Как вариант: переключить вывод в консоль у bat файла в UTF8
Со своим текстом я могу так сделать, там система еще свои пишет.
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

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

@echo off
@chcp 65001 > nul
echo Привет.
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

xchgeaxeax писал(а):

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

@echo off
@chcp 65001 > nul
echo Привет.
Система перешла на английский язык.
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

У меня она остается на русском
Screenshot_20240921_122611.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Ustas, какой у вас язык локализации винды и какой язык включен в настройках интерпретации не-юникода? Подозреваю, что английский.
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Снег Север писал(а):Ustas, какой у вас язык локализации винды и какой язык включен в настройках интерпретации не-юникода? Подозреваю, что английский.
Нет. Это такой прикол у Windows. Проверил на Windows 7 под VirtualBox. В настройках везде выставлен Русский, а система переключается на English при использовании chcp 65001 в консоли. А вот у Wine все нормально. Он сразу начинает использовать преобразование и все хорошо.

Просто полноценная поддержка UTF8 появляется только у Windows 11. У всех предыдущих она кривая.

Еще один выход это просто применять в программе функцию трансляции кодировки текста к TProcess.Output. Главное, чтобы весь текст был в одной кодировке и, разумеется, правильно её указать для функции трансляции.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

xchgeaxeax а при чем тут ваша Windows 7, если у топикстартера Windows 10? А десятка и одиннадцатая в отношении консоли и UTF8 не отличаются ничем.
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Ustas писал(а):Написал процедуру запуска внешних программ, используя TProcessUTF8.
Запускаю батники. Как получить результат выполнения в AProcess.Output кириллицей?
Прогони через LazUTF8.WinCPToUTF8(), должно помочь. Большая часть функций ОС требуют конвертирования.
xchgeaxeax писал(а):Просто полноценная поддержка UTF8 появляется только у Windows 11. У всех предыдущих она кривая.
Что у одного кривая у другого обратная совместимость называется.
xchgeaxeax
постоялец
Сообщения: 198
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Sharfik писал(а):Что у одного кривая у другого обратная совместимость называется.
:D
Sharfik писал(а):LazUTF8.WinCPToUTF8()
Тогда все равно надо переключаться на 1251. Иначе виндовые утилиты в консоль выплевывают 866. Важно, чтобы кракозябры были в одной CP.

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

@chcp 1251 > nul
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Уже 20 лет не встречал в винде 866. Что я делаю не так?
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Снег Север писал(а):Уже 20 лет не встречал в винде 866. Что я делаю не так?
Не пользуешься русскими сборками.
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

Снег Север писал(а):Уже 20 лет не встречал в винде 866. Что я делаю не так?
не пользуетесь виндой? тока проверил, вин7 - 866, вин8.1 - 866, вин10 - 866, вин11 - 1251
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Сквозняк писал(а):Не пользуешься русскими сборками.
Нет, разумеется. Использую английский интерфейс и мультиязычные настройки.
sts писал(а):не пользуетесь виндой? тока проверил, вин7 - 866, вин8.1 - 866, вин10 - 866, вин11 - 1251
Странно. У меня начиная с семерки всегда UTF8.

ЗЫ. Правда честно говоря консолью я пользуюсь в среднем один раз в году.
Ответить