Кодирование символов при запуске сценария powershell в качестве подпроцесса python - PullRequest
0 голосов
/ 27 июня 2019

В настоящее время я пишу небольшое приложение на Python, которое выполняет скрипт PowerShell.Мой скрипт на python должен обрабатывать возвращаемую строку, но, к сожалению, у меня есть некоторые проблемы с кодировкой специальных символов, таких как ä, ö, Ü и так далее.Как я могу вернуть строку Unicode / UTF-8?

Вы можете увидеть простой пример ниже.Выход консоли b'\xc7\xcf\r\n'.Я не понимаю, почему это не b'\xc3\xa4\r\n', потому что \xc3\xa4 должно быть правильной кодировкой UTF8 для символа 'ä'.

try.py:

import subprocess
p = subprocess.check_output(["powershell.exe", ".\script.ps1"])
print(p)

script.ps1:

return 'ä'

Я каким-то образом принял свой сценарий PowerShell, но не получил желаемого результата.

  1. Добавлено "[Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8". Result: b'\xc3\x83\xc2\xa4\r\n'

  2. Возвращено return [System.Text.Encoding]::UTF8.GetBytes("ä"). Result: b'195\r\n131\r\n194\r\n164\r\n'

Кто может помочь получить консольный вывод 'ä' для моего верхнего сценария?

1 Ответ

0 голосов
/ 27 июня 2019

Я использовал "pwsh", потому что я запустил его на Mac, вы можете использовать "powershell.exe" в своем коде Попробуйте это:

import subprocess

p = subprocess.check_output(["pwsh", ".\sc.ps1"])
print(p.decode('utf-8'))

Подробнее: здесь можно прочитать .

Рабочий скриншот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...