Wrong encoding on PowerShell Invoke-WebRequest POST
powershell-3.0
Solution
This worked for me:
$postData = "žluťoučký kůň úpěl ďábelské ódy"
Invoke-WebRequest -Uri 'http://www.example.com/' -Method Post -Body $postData
-ContentType "text/plain; charset=utf-8"
Adding the charset=utf-8 fixed my issue where the acute accent characters were getting converted to special symbols.
Problem
I'm using Invoke-WebRequest POST method to send an text data. After sending the text in a wrong encoding. Script: ``` $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" ``` Fiddler: ``` 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 ``` Edited: It seems that it is necessary to first convert the text into utf8. PowerShell ISE uses a different encoding by default. In my case, 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" ```