我将文件的内容发送到服务器:
$uri = ...
$headers = @{
...
"Content-Type" = "application/json"
}
[string] $content = Get-Content .\filename -Encoding utf8 -Raw
$body = @{
...
"content" = $content
} | ConvertTo-Json
$response = Invoke-WebRequest $uri -Method 'PUT' -Headers $headers -Body $body
但是所有非 ascii 字符都被更改为相似的 ascii 或问题
我怎样才能逃脱他们?
我阅读了文档并且知道 cmdlet 参数-EscapeHandling
,但ConvertTo-Json
它适用于 PowerShell 6.2,但我有 5.1 版
结果,我写了一个简单的函数:
并像这样使用它:
有效。奇怪的是设置标题没有帮助
"Content-Type" = "application/json; charset=utf-8"
。好吧,对于未来的 Google 员工,这是对 GitLab API更新存储库中现有文件的调用PS:我在 PS 中和在 C# 中一样编写,因为 PS 我真的不知道,如果有人有任何想法如何在 powershell 中更多地重写它 - 不客气。
PPS:嗯,我知道它
StringBuilder.Append
改变了一个现有的对象,并没有返回一个新的,但我在这里添加了一个赋值($sb = $sb.Append($c)
而不是一个简单的$sb.Append($c)
),因为没有它,每一行也会显示在控制台上,如果你知道如何在没有这个拐杖的情况下解决它,也请写信。