[英]C# HttpRequest and different encodings
這是我的問題。 我有一個ASP.NET / C#網站,通過GET / POST接收一些數據
這是“用戶填充”數據,但不是通過網頁,它是與我的服務器聯系的軟件。
問題是,該軟件正在發送以ISO-8859-1編碼的數據(因此Café將作為Caf%e9發送),其余的SW / DB是Unicode
此外,數據完全被破壞,恢復已發送的內容:/
處理這個問題的最佳方法是什么?
我嘗試設置Request.ContentEncoding(在閱讀之前),但沒有用。
這里唯一有用的是將以下代碼添加到web.config:
<configuration>
<system.web>
<globalization requestEncoding="iso-8859-1"/>
</system.web>
</configuration>
然后使用
Request["varName"]
不要使用HttpUtility.UrlDecode
或HttpUtility.UrlEncode
,這些只能用於原始查詢字符串。 請求[]已經為您解碼。
感謝JamesP自己發布這個想法。
%e9只是é但UrlEncoded。 Server.UrlDecode您的請求字符串。
看着
短:
在web.config中寫
<configuration>
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
</configuration>
刪除aspx頭中的編碼條目。
如果utf-8不正確,請嘗試使用utf-16
我希望這有幫助。
這個問題的原作者。
幫助我的是Georg建議設置Web.config變量,我把它
requestEncoding = “ISO-8859-1”
現在一切正常,謝謝!
如果我理解正確,您將從HTTP請求中提取此信息。 我將假設它是編碼中的HTTP請求主體。
您可以使用System.Text.Encoding.GetEncoding(...)來檢索ISO-8859-1的Encoding對象。 然后在該編碼對象上調用GetDecoder(),並使用它來解釋請求體。 理想情況下,您可以從請求中的標頭值確定從Encoding.GetEncoding(...)加載的編碼類型,因此支持具有不同配置的服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.