【发布时间】:2021-03-30 20:07:03
【问题描述】:
我正在使用 Invoke-WebRequest POST 方法发送文本数据。以错误的编码发送文本后。
脚本:
$postData = "žluťoučký kůň úpěl ďábelské ódy"
Invoke-WebRequest -Uri 'http://www.mydomain.com/' -Method Post -Body $postData -ContentType "text/plain; charset=utf-8"
提琴手:
POST http://www.mydomain.com/ HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.2; cs-CZ) WindowsPowerShell/4.0
Content-Type: text/plain; charset=utf-8
Host: www.mydomain.com
Content-Length: 31
zlutouck� kun �pel d�belsk� �dy
已编辑:
看来需要先将文本转成utf8。默认情况下,PowerShell ISE 使用不同的编码。 在我的例子中,windows-1250。
$text = "žluťoučký kůň úpěl ďábelské ódy"
$postData = [System.Text.Encoding]::UTF8.GetBytes($text)
Invoke-WebRequest -Uri 'http://www.mydomain.com/' -Method Post -Body $postData -ContentType "text/plain; charset=utf-8"
【问题讨论】:
-
请将您的编辑发布为您问题的答案; that's how we do things around here.
-
[System.Text.Encoding]::UTF8.GetBytes()对我不起作用。输出类似于[29, 118, 61, 80, 267...] -
PowerShell 版本对于本主题很重要。我可以在 PS 5.1 上将 UTF8 字符串作为帖子正文没有任何问题,但对于 PS 4.0,我需要将字符串保存到文件中,然后使用带有 -InFile 参数而不是 -Body 的 Web 请求
标签: powershell-3.0