2014-02-06 10 views
7

Ich verwende Invoke-WebRequest POST-Methode, um Textdaten zu senden. Nach dem Senden des Textes in einer falschen Codierung.Falsche Codierung auf PowerShell Invoke-WebRequest POST

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" 

Fiedler:

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 

Herausgegeben:

Es scheint, dass es notwendig ist, zuerst den Text in UTF-8 zu konvertieren. PowerShell ISE verwendet standardmäßig eine andere Codierung. In meinem Fall, 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" 
+2

Bitte posten Sie Ihre Bearbeitung als Antwort auf Ihre Frage; [So machen wir Dinge hier] (https://stackoverflow.com/help/self-answer). – sleblanc

+0

'[System.Text.Encoding] :: UTF8.GetBytes()' funktionierte nicht für mich. Ausgabe ist wie '[29, 118, 61, 80, 267 ...]' – Groosha

Antwort

2

Das ist für mich gearbeitet:

$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" 

die charset = utf-8 fixiert meine Frage, wo die Akut-Zeichen Sonderzeichen umgewandelt wurden immer Hinzufügen.

Verwandte Themen