2013-03-07 112 views
1

TL; DR D ü sseldor編碼爲D & amp;#252; sseldor,杜塞爾多夫未編碼(由默認的MVC編碼)爲什麼?什麼字符是html編碼的?

我正在構建一個使用soap的api。當我收到一個請求時,我將html編碼爲所有數據。 就在我結束當前請求之前,我複製Response.Stream並將其保存以進行日誌記錄。

我注意到杜塞爾多夫是由我的api編碼爲「D ü sseldorf」。這是預料之中的。 但是在我的日誌中,它顯示杜塞爾多夫編碼爲「D & amp;#252; sseldorf」(雙編碼),我的日誌在MVC串行化寫入響應流後保存。

我認爲這是因爲soap在通過電線發送它們之前對值進行編碼。

所以我的下一個測試是關閉我的api中的html編碼。 所以這次杜塞爾多夫給皁序列器。

但它被編碼爲杜塞爾多夫?

編輯:當我說我打開/關閉編碼我的意思是請求中的每個字段我使用HttpUtility.HtmlEncode(「一些字段」)。並將其保存到數據庫。然後,我喜歡這樣的MVC視圖返回數據:

我的問題是ContentResult類型方法運行時,它似乎做一些自己的編碼,我想知道那是什麼東西?

+0

你的問題有點混亂。如果你禁用了html編碼,那會不會是預期的結果?另外,當你關閉html編碼時,你的日誌裏有什麼? – crazylpfan 2013-03-07 22:30:34

回答

2

SOAP使用XML - HTML和XML需要稍微不同的編碼,但它可能會或可能不會成爲您的問題。

更有可能是您的手動構建XML不正確。請不要用字符串連接構造XML - XDocument/XmlDocument更適合這種情況。

+0

如果我有一個很好的記憶,我記得使用類XmlDocument,並添加兒童/值,獲取應用編碼的文檔。 嘗試使用'System.Xml.XmlDocument' – 2013-03-07 22:40:13

+0

我不手動創建xml。我使用內置的.net方法 – user1909158 2013-03-07 23:24:59

+0

@ user1909158您的聲明「I html編碼所有數據」根據「我使用內置的.net方法(使用XML)」聽起來不正確。你可能應該用示例文本/代碼更新你的問題,所以你很清楚你有什麼問題。 – 2013-03-07 23:41:25