具有cyrrylic问题的Powershell,JSON和UTF8

时间:2016-11-01 13:27:07

标签: .net json powershell

我有一些带有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中看到代码页问题非常奇怪......

1 个答案:

答案 0 :(得分:1)

$ rowdata = Invoke-WebRequest' 123 / monitoring.json' -UseBasicParsing

$ utf8_ready_data = [system.Text.Encoding] :: UTF8.GetString($ rowdata.RawContentStream.ToArray());

看起来Invoke-WebRequest在2016年讨厌utf8 ..