我有一些带有 JSON 的网站。 JSON 在 utf8 代码页中(如在 RFC 中)
Web 服务器回答:Content-Type:application/json;字符集=utf-8
我需要将其转换并发送给 scom 代理。一切正常,除了 powershell 将任何西里尔符号破坏为 '?'
$api = New-Object -comObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $sourceId, $managedEntityId)
$browser = New-Object System.Net.WebClient
$browser.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials
$rowdata = Invoke-WebRequest 'https://monitoring.net/monitoring.json' -UseBasicParsing
$jsondata = ConvertFrom-Json $rowdata
foreach ($urls in $jsondata.monitors)
{
$instance = $discoveryData.CreateClassInstance("$MPElement[Name='58MCLibrary!F.058MC.Json.Url.Class']$")
$instance.AddProperty("$MPElement[Name='058MCLibrary!058MC.Json.Url.Class']/Name$", $urls.name)
$instance.AddProperty("$MPElement[Name='58MCLibrary!058MC.Json.Url.Class']/Resource$", $urls.resource)
$instance.AddProperty("$MPElement[Name='058MCLibrary!058MC.Json.Url.Class']/Description$", $urls.description)
$discoveryData.AddInstance($instance)
}
$discoveryData
故事是 $urls.name 和 $urls.resource 没问题 - 里面没有 cyrrylic
但是 $urls.description 看起来像 Description ??????????????, ?????????????????????? ?????????? ?????????? ??????????。 ???????????????
有什么办法可以解决吗?我尝试将 .NET 的默认 env 代码页设置为 utf8 - 没有更改...
在PS中看到codepage问题很奇怪...
最佳答案
$rowdata = Invoke-WebRequest '123/monitoring.json' -UseBasicParsing
$utf8_ready_data = [system.Text.Encoding]::UTF8.GetString($rowdata.RawContentStream.ToArray());
看起来 Invoke-WebRequest 在 2016 年讨厌 utf8..
关于.net - Powershell、JSON 和 UTF8 有 cyrrylic 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40361046/