.net - Powershell、JSON 和 UTF8 有 cyrrylic 问题

标签 .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 看起来像 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/

相关文章:

c# - += 如何比普通表达式更优化

C++ nlohmann/json 如何使用运行时提供的 json_pointers 来读取 json 值

powershell - 在自动构建过程中使用脚本

c# - 如何验证 PowerShell cmdlet 中的相关参数

c# - 手动加载依赖程序集

.net - 是否可以通过编程方式升级/降级到正在运行的ClickOnce应用程序的特定版本?

json - 抛出异常试图将 NSSingleEntryDictionary 转换为 NSArray

json - 如何在 GET 请求中发送结构

javascript - 如何使用子进程和nodejs执行windows powershell命令?

.net - 每秒能够处理 40,000 条消息的系统的模式和技术