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

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

Теги

 

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

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

Андрей Викторович Столяров
Учебник "Программирование: введение в профессию" ориентирован на самостоятельное изучение и предполагает использование систем семейства Unix (в т.ч. Linux) в роли сквозной среды для обучения.

Теги

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

Все любят халяву, и я люблю. Вбиваю в поисковик такие фразы как "free it books" или "бесплатные книги по системному администрированию" и иногда даже что-то нахожу. Обычно это что-то на английском языке и древнее как бивни мамонта. Попадаются и более полезные экземпляры, однако, я не уверен, что они действительно бесплатные...

Теги