2013-03-08 3 views
6

Я пытаюсь отправить специальные символы (норвежский) с помощью Invoke-WebRequest в контроллер API ASP.NET MVC4.Invoke-WebRequest - проблема со специальными символами в json

Моя проблема заключается в том, что объект json отображается как NULL, когда он получен контроллером, если мои json-данные содержат символы, такие как Æ Ø Å.

Пример моего кода:

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

Также при поиске в стельку символы повернуть вверх как обычные странные utf8 коробки.

Передача данных JSon от скрипача к тому же контроллеру API работает отлично

Любые советы?

+0

Можете ли вы попытаться запустить Fiddler, чтобы сузить проблему? –

+0

'POST http: // localhost: 51212/api/Add HTTP/1.1 \t User-Agent: Mozilla/5.0 (Windows NT, Windows NT 6.1; nb-NO) WindowsPowerShell/3.0 \t Content-Type: application/json ; кодировка = UTF-8 \t Ведущий: локальный: 51212 \t Content-Length: 3 \t \t ' –

ответ

19

Для параметра Body попробуйте следующее:

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

Строка в PowerShell является Unicode, но вы указали кодировку UTF8, так что я думаю, что вы должны дать ему некоторую помощь при получении в UTF8.

+0

Спасибо, я был в заблуждение, полагая, что строка была уже UTF8, так как файл пс UTF8 , –

+1

@ Keith Hill, этот ответ просто полностью спас меня, когда я ударил по аналогичной проблеме и не дал большой боли. Я бы не подумал, что проблема была в Unicode -> UTF8. +1 –

Смежные вопросы