Как кодировать немецкие символы (например, ü) с powershell для REST API? - PullRequest
0 голосов
/ 11 января 2019

Я создаю пользователей из сценариев PowerShell, размещая данные, собранные из AD, на веб-портале с поддержкой REST API, используя:

$response = Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body $body

где $ body - полезная нагрузка в формате JSON, например:

{
"email" : "klaus.mueller@domain.com",
"firstname" : "Klaus",
"lastname" : "Müller",
"active" : "true",
"superadmin" : "false"
}

Если в названии нет немецкой буквы, то все в порядке. и пользователь создан. Когда есть немецкий символ, я получаю ответ 400: Bad Request от сервера.

Могу ли я как-то изменить поведение Invoke-RestMethod с помощью настройки кодировки или сервер может быть настроен так, чтобы не получать символы de?

1 Ответ

0 голосов
/ 11 января 2019

Это похоже на этот вопрос.

Как сказал @Keith Hill

Строка в PowerShell - это Unicode, но вы указали кодировку UTF8, поэтому я думаю, что вам нужно помочь ей добраться до UTF8.

Хотя связанный поток ссылается на Invoke-WebRequest, кодировка по-прежнему должна быть действительной для Invoke-RestMethod.

Ваш запрос должен выглядеть примерно так

$response = Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body ([System.Text.Encoding]::UTF8.GetBytes($body))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...