2013-03-08 12 views
6

Próbuję wysyłać znaki specjalne (norweski) za pomocą Invoke-WebRequest do kontrolera API ASP .NET MVC4.Invoke-WebRequest - problem ze znakami specjalnymi w jsonie

Mój problem polega na tym, że obiekt json pojawia się jako NULL po odebraniu przez kontroler, jeśli moje dane json zawierają znaki takie jak Æ Ø Å.

Przykładem mojego kodu:

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

także patrząc w Fiddler znaki pojawiają się jak zwykle dziwne utf8 polach.

Wysyłanie danych json z Skrzypek na tym samym kontrolerze API działa dobrze

jakieś rady?

+0

Czy możesz spróbować wypuścić Skrzypka, aby zawęzić problem? –

+0

'POST http: // localhost: 51212/api/Dodaj HTTP/1.1 \t Użytkownik-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.1; nb-NO) WindowsPowerShell/3.0 \t Treści-typ: application/json ; charset = UTF-8 \t Host: localhost: 51212 \t Content-Length: 3 \t \t ' –

Odpowiedz

19

Dla parametru Body spróbuj tego:

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

Ciąg w PowerShell jest Unicode ale już określono kodowanie UTF-8, więc myślę, że trzeba dać mu jakąś pomoc z dostaniem się do UTF8.

+0

Dziękuję, byłem w herezja myślenia, że ​​ciąg był już UTF8 ponieważ plik ps jest UTF8 . –

+1

@Keith Hill, ta odpowiedź całkowicie uratowała mnie, gdy uderzyłem w podobny problem i nie dopuściłem do bólu. Nie sądziłem, że problemem jest Unicode -> UTF8. +1 –

Powiązane problemy