powershell Invoke-RestMethod UTF8字符?

von4xj4u  于 2022-11-10  发布在  Shell
关注(0)|答案(3)|浏览(193)

我正在从Invoke-RestMethod执行PUT,但终结点不喜欢我的瑞典语字符。我已经在我的Windows CMD窗口上从下载的cURL中进行了验证,并得到了相同的结果错误400。奇怪的是,它是从我机器上的 Postman 那里收到的。会不会与UTF8和BOM有关?我试着把它从我的绳子上拿下来,但没用。
不起作用:

{    "User":  {
                 "email":  "xxxxx@domain.com",
                 "last_name":  "Åkesson",
                 "first_name":  "Thomas",
                 "enabled":  true
             }
}

工作:

{
    "User":  {
                 "email":  "xxxxx@domain.com",
                 "last_name":  "akesson",
                 "first_name":  "Thomas",
                 "enabled":  true
             }
}

对我来说,问题似乎与Changing PowerShell's default output encoding to UTF-8有关?或者,终结点本身可能有一些错误?

qacovj5a

qacovj5a1#

用这句话解决了这个问题:

$body = [System.Text.Encoding]::UTF8.GetBytes($json)

答案:Microsoft: Invoke-RestMethod and UTF-8 data

t5fffqht

t5fffqht2#

当我试图在使用PowerShell的团队中发布一些东西时,我遇到了丹麦角色åæø的问题。我发现解决方案是在调用中包括字符编码:

$FilePath = '.\body.txt'
$fileContent = Get-Content -Path $FilePath -Encoding UTF8 
Write-host $fileContent
Invoke-RestMethod -ContentType "application/json; charset=windows-1252" -Uri "https://example.webhook.office.com/webhookb2" -Method 'Post' -Body $fileContent

也就是说,包括charset=windows-1252对我来说很管用。

omhiaaxx

omhiaaxx3#

对我来说,这个方法奏效了(场景是从WordPress中拉出来)。参见下面关于Get-Content‘文件路径’-编码UTF8的内容。也许首先输出到XML是这里的关键?


# GET WordPress posts.

Invoke-RestMethod -Uri 'https://wordpress.com/category/feed/' -OutFile C:\PowerShell\MakeFeed.xml

# NOTE -Encoding UTF8 is crucial here / otherwise bad characters for superscript, quotes, etc.

[xml]$Content = Get-Content C:\PowerShell\MakeFeed.xml -Encoding UTF8

相关问题