我有一些带有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看起来像描述?????????????????????????????????????????????????? ?????????? ?????????????? ??????????。 ????????????????????
有什么办法解决吗?我尝试用.NET将默认的env代码页设置为utf8 - 没有变化......
在PS中看到代码页问题非常奇怪......
答案 0 :(得分:1)
$ rowdata = Invoke-WebRequest' 123 / monitoring.json' -UseBasicParsing
$ utf8_ready_data = [system.Text.Encoding] :: UTF8.GetString($ rowdata.RawContentStream.ToArray());
看起来Invoke-WebRequest在2016年讨厌utf8 ..