2015-09-23 156 views
0

我的WebApi返回UTF16 JSON結果。 嘗試使用JSON.NET對此進行反序列化導致錯誤:JSON.NET反序列化UTF16

解析值時遇到意外的字符:。路徑'',第0行,位置0.

我看着Deserialize方法的設置,看起來像沒有選項來指定編碼。 UTF8被硬編碼到解析器中?

看起來JSON.NET不能反序列化UTF16,要麼服務器必須以UTF8響應,要麼消費者需要將結果從16重新編碼爲8. 這2個唯一的解決方案?

+0

你是說.NET沒有原生字符集獨立的文本類型? –

+1

你是如何使用Json.NET的?如果你給它一個'string',那麼你可能在開始時會有一個BOM,參見[解析JSON C#錯誤](http://stackoverflow.com/questions/14181193/parse-json-c-sharp-error) 。如果您正在使用['JsonTextReader'](http://www.newtonsoft.com/json/help/html/ReadJson.htm),那麼底層StreamReader需要使用正確的編碼。 – dbc

回答

0

我使用System.Net.WebClient來調用服務。 1的搜索結果暗示需要處理被壓縮的內容,並且我的服務響應在頁眉中顯示gzip

通過切換到使用System.Net.WebRequest,問題解決了,我無需關心壓縮內容。

因此,原因可能與JSON.NET和編碼沒有關係,但是由於使用System.Net.WebClient時的壓縮內容。