2013-03-23 51 views
2

我有一個用C#編寫的WCF應用程序,它根據用戶在查詢字符串中要求的內容以JSON或XML傳遞我的數據。這裏是我的代碼快速片段,提供數據:UTF-8中沒有字節順序標記的JSON提要

Encoding utf8 = new System.Text.UTF8Encoding(false); 
return WebOperationContext.Current.CreateTextResponse(data, "application/json", utf8); 

當我使用提供上述方法中的數據,特殊字符都搞砸了。所以查韋斯看起來像查韋斯。另一方面,如果我使用BOM創建utf8變量或使用enum(Encoding.UTF8),則特殊字符可以正常工作。但之後,我的一些消費者抱怨說他們的代碼在使用我的API時拋出異常。這當然是因爲Feed中的BOM而發生的。有沒有辦法讓我正確顯示Feed中沒有BOM的特殊字符?

+0

您是否嘗試過內容類型'application/json; charset = utf-8'而不是'application/json'? – I4V 2013-03-24 11:24:05

+0

json的唯一合法編碼是UTF-8/16/32,UTF-8是事實上的標準 – Esailija 2013-03-24 23:45:14

回答

0

它看起來像輸出是正確的,但無論您用什麼來顯示它,都期望ANSI編碼的文本。當你用UTF-8對查韋斯進行編碼並將結果解釋爲拉丁字符1時,就會得到ChÃvez。

+0

我只是在瀏覽器中查看它,並期望在UTF8中使用它。如果我只想得到ChÃvez,那麼爲什麼當添加物料清單時它會正確顯示。謝謝。 – Kenpachii 2013-03-24 03:02:42

+0

網絡瀏覽器?您必須發送適當的內容類型標題,如「Content-Type:text/xml; charset = utf-8',以UTF-8解釋文檔。發送物料清單時,您可能會觸發瀏覽器的自動編碼檢測算法。 – Joni 2013-03-24 08:10:39

+0

出於某種原因,我期待CreateTextResponse方法使用編碼類型來添加內容類型標題。在這種情況下,我必須在contentType參數中指定它是utf-8。添加完整的內容類型後,我能夠得到正確的結果。 – Kenpachii 2014-02-14 20:03:00

相關問題