2013-03-08 10 views
6

Ich versuche, Sonderzeichen (norwegisch) mit Invoke-WebRequest zu einem ASP .NET MVC4 API-Controller zu senden.Invoke-WebRequest - Problem mit Sonderzeichen in JSON

Mein Problem ist, dass das Json-Objekt als NULL angezeigt wird, wenn es vom Controller empfangen wird, wenn meine JSON-Daten Zeichen wie Æ Ø Å enthalten.

Ein Beispiel für meinen Code:

$text = 'Æ Ø Å' 
$jsondata = $text | ConvertTo-Json 
Invoke-WebRequest -Method POST -Uri http://contoso.com/create -ContentType 'application/json; charset=utf8' -Body $jsondata 

Auch wenn in Fiedler sucht die Figuren drehen wie die üblichen seltsam utf8-Box auf.

Senden json Daten von Fiedler auf den gleichen API-Controller funktioniert

Irgendwelche Tipps?

+0

Können Sie versuchen, Fiddler einzuschalten, um das Problem einzugrenzen? –

+0

'POST http: // localhost: 51212/api/Hinzufügen HTTP/1.1 \t Benutzer-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.1; nb-NO) WindowsPowerShell/3.0 \t Inhaltstyp: application/json ; charset = utf-8 \t Host: localhost: 51212 \t Content-Length: 3 \t \t ' –

Antwort

19

Für den Body Parameter versuchen Sie dies:

... -Body ([System.Text.Encoding]::UTF8.GetBytes($jsondata)) 

Die Zeichenfolge in Powershell Unicode ist, aber Sie haben eine UTF8-Codierung angegeben, damit ich glaube, Sie brauchen es etwas Hilfe geben, um UTF8 zu bekommen.

+0

Danke, ich in der Irrglaube daran dachte, dass die Zeichenfolge bereits UTF8 war, da die ps-Datei UTF8 . –

+1

@Keith Hill, diese Antwort hat mich total gerettet, als ich auf ein ähnliches Problem traf und eine Menge Schmerzen verhinderte. Ich hätte nicht gedacht, dass das Problem Unicode -> UTF8 war. +1 –