Powershell ConvertFrom-Json иврит --> Вопросительные знаки

Я пытаюсь преобразовать переменную Powershell из Json и вместо иврита получаю вопросительные знаки.

Насколько я знаю, для ConvertFrom-Json нет параметра кодирования, есть идеи, как я могу передать иврит?

взгляните на это слово: מחילמ

PS D:\wa2> $BotUpdates


StatusCode        : 200
StatusDescription : OK
Content           : {"succes":true,"response":[{"key":{"remoteJid":"","fromMe":false,"id":"","participant":""},"message":{"conversation":"***מחילמ***"},...
RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    Keep-Alive: timeout=5
                    Content-Length: 308
                    Content-Type: application/json; charset=utf-8
                    Date: Thu, 24 Dec 2020 13:35:35 GMT
                    ETag: W/"134-v3U3d/6PCvlXMASgH7...
Forms             : {}
Headers           : {[Connection, keep-alive], [Keep-Alive, timeout=5], [Content-Length, 308], [Content-Type, application/json; charset=utf-8]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 308

И после преобразования из Json

PS D:\wa2> ($BotUpdates | ConvertFrom-Json).response

key                                                                                                                      message                    messageTimestamp participant                
---                                                                                                                      -------                    ---------------- -----------                
@{remoteJid=18XXXXXX; fromMe=False; id=3AXXXXXX67A1; participant=9} @{conversation=??????????} 1608816932       



PS D:\wa2>

взгляните на @{conversation=??????????}

Есть идеи?

Это любопытно, учитывая, что сам объект ответа предполагает, что ответ был получен правильно, или вы не показываете необработанный вывод? ConvertFrom-Json работает со строками .NET, уже находящимися в памяти, тогда как интерпретация кодировки символов происходит только тогда, когда Invoke-WebRequest анализирует запрос и создает эти строки .NET. В ответе предлагается кодировка UTF-8, которую Invoke-WebRequest следует подобрать через поле заголовка Content-Type. В качестве отступления: для JSON API, как правило, проще использовать Invoke-RestMethod, так как он, так сказать, встроен в ConvertFrom-Json.

mklement0 24.12.2020 15:33

Если вы обнаружите, что кодировка символов ответа неверно истолкована, вы можете попробовать перекодировать впоследствии, как показано в этом ответе.

mklement0 24.12.2020 15:35

Это, вероятно, связано с кодировкой вывода консоли ($OutputEncoding), и исходная строка в порядке. Вы можете перенаправить его в файл (с правильной кодировкой) и проверить.

Giorgi Chakhidze 27.12.2020 17:38
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
3
278
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, я хотел бы обновить, что я решил это, конвертируя

($BotUpdates.content | ConvertFrom-Json).response

Вместо

($BotUpdates | ConvertFrom-Json).response

Другие вопросы по теме