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

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

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

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

Сообщение Ustas » 21.09.2024 10:17:37

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

Написал процедуру запуска внешних программ, используя TProcessUTF8.
Запускаю батники. Как получить результат выполнения в AProcess.Output кириллицей?
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

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

Сообщение xchgeaxeax » 21.09.2024 10:21:15

Как вариант: переключить вывод в консоль у bat файла в UTF8
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

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

Сообщение Ustas » 21.09.2024 11:45:01

xchgeaxeax писал(а):Как вариант: переключить вывод в консоль у bat файла в UTF8

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

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

Сообщение xchgeaxeax » 21.09.2024 11:49:14

Код: Выделить всё
@echo off
@chcp 65001 > nul
echo Привет.
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

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

Сообщение Ustas » 21.09.2024 11:56:30

xchgeaxeax писал(а):
Код: Выделить всё
@echo off
@chcp 65001 > nul
echo Привет.

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

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

Сообщение xchgeaxeax » 21.09.2024 12:26:54

У меня она остается на русском
Screenshot_20240921_122611.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

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

Сообщение Снег Север » 21.09.2024 12:37:07

Ustas, какой у вас язык локализации винды и какой язык включен в настройках интерпретации не-юникода? Подозреваю, что английский.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение xchgeaxeax » 21.09.2024 12:56:05

Снег Север писал(а):Ustas, какой у вас язык локализации винды и какой язык включен в настройках интерпретации не-юникода? Подозреваю, что английский.

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

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

Еще один выход это просто применять в программе функцию трансляции кодировки текста к TProcess.Output. Главное, чтобы весь текст был в одной кодировке и, разумеется, правильно её указать для функции трансляции.
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

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

Сообщение Снег Север » 21.09.2024 22:44:29

xchgeaxeax а при чем тут ваша Windows 7, если у топикстартера Windows 10? А десятка и одиннадцатая в отношении консоли и UTF8 не отличаются ничем.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение Sharfik » 23.09.2024 18:45:22

Ustas писал(а):Написал процедуру запуска внешних программ, используя TProcessUTF8.
Запускаю батники. Как получить результат выполнения в AProcess.Output кириллицей?

Прогони через LazUTF8.WinCPToUTF8(), должно помочь. Большая часть функций ОС требуют конвертирования.

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

Что у одного кривая у другого обратная совместимость называется.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

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

Сообщение xchgeaxeax » 23.09.2024 19:14:23

Sharfik писал(а):Что у одного кривая у другого обратная совместимость называется.

:D

Sharfik писал(а):LazUTF8.WinCPToUTF8()

Тогда все равно надо переключаться на 1251. Иначе виндовые утилиты в консоль выплевывают 866. Важно, чтобы кракозябры были в одной CP.
Код: Выделить всё
@chcp 1251 > nul
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

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

Сообщение Снег Север » 24.09.2024 11:28:13

Уже 20 лет не встречал в винде 866. Что я делаю не так?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение Сквозняк » 24.09.2024 13:33:30

Снег Север писал(а):Уже 20 лет не встречал в винде 866. Что я делаю не так?

Не пользуешься русскими сборками.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

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

Сообщение sts » 24.09.2024 13:43:55

Снег Север писал(а):Уже 20 лет не встречал в винде 866. Что я делаю не так?

не пользуетесь виндой? тока проверил, вин7 - 866, вин8.1 - 866, вин10 - 866, вин11 - 1251
sts
постоялец
 
Сообщения: 431
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

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

Сообщение Снег Север » 25.09.2024 13:00:56

Сквозняк писал(а):Не пользуешься русскими сборками.

Нет, разумеется. Использую английский интерфейс и мультиязычные настройки.

sts писал(а):не пользуетесь виндой? тока проверил, вин7 - 866, вин8.1 - 866, вин10 - 866, вин11 - 1251

Странно. У меня начиная с семерки всегда UTF8.

ЗЫ. Правда честно говоря консолью я пользуюсь в среднем один раз в году.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru