【问题标题】:Powershell ConvertFrom-Json Hebrew --> Question marksPowershell ConvertFrom-Json 希伯来语 --> 问号
【发布时间】:2020-12-24 13:55:10
【问题描述】:

我正在尝试从 Json 转换 Powershell 变量,但得到的是问号而不是希伯来语。

据我所知,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,可以这么说。
  • 如果您确实发现响应的字符编码被误解了,您可以尝试在之后重新编码,如this answer所示。
  • 这可能与控制台输出编码($OutputEncoding)有关,原始字符串非常好。您可以将其重定向到一个文件(使用正确的编码)并验证。

标签: json powershell hebrew convertfrom-json


【解决方案1】:

好吧,我想更新一下我通过转换解决了它

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

而不是

($BotUpdates | ConvertFrom-Json).response

【讨论】:

    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 2013-11-26
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多