Перейти к основному содержанию

Powershell — кракозябры в Invoke-WebRequest

code

В коде 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

Теги

 

Похожие материалы

Программирование: введение в профессию. Том 1: азы программирования

Андрей Викторович Столяров
Первый том серии "Программирование: введение в профессию" включает две основные части.

Теги

BAT скрипт — скрыть вводимый пароль

Понадобилось модифицировать пакетный BAT скрипт таким образом, чтобы на экране не отображался ввод пароля. Планировалось демонстрировать работу скрипта на экране, при этом нужно было не светить вводимый пароль.

Теги