Найти в Дзене

Powershell — кракозябры

В коде Powershell скрипта делаю GET запрос с помощью Invoke-WebRequest и получаю на выходе неверную кодировку. Powershell следует стандарту ISO-8859-1, а JSON честно выдаёт данные в UTF-8, получаются кракозябры.

Нашёл простой способ конвертации текста из ISO-8859-1 в UTF-8:

function convertFromISOToUtf8([string] $String) {
[System.Text.Encoding]::UTF8.GetString(
[System.Text.Encoding]::GetEncoding(28591).GetBytes($String)
)
}

Пример скрипта:

# кодировка из ISO-8859-1 в UTF-8
function convertFromISOToUtf8([string] $String) {
[System.Text.Encoding]::UTF8.GetString(
[System.Text.Encoding]::GetEncoding(28591).GetBytes($String)
)
}

#получение JSON
$wget = Invoke-WebRequest `
-Uri "https://example.com/api/?q=server01"`
-Headers @{
"Accept"="application/json; indent=4""";
"cache-control"="no-cache";
}`
-ContentType "application/json; charset=utf-8"
$wgetUTF8 = convertFromISOToUtf8($wget.Content)
$wgetUTF8

Источник:
https://internet-lab.ru/powershell_from_ISO-8859-1_to_UTF-8

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.