簡體   English   中英

C#HttpRequest和不同的編碼

[英]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.UrlDecodeHttpUtility.UrlEncode ,這些只能用於原始查詢字符串。 請求[]已經為您解碼。

感謝JamesP自己發布這個想法。

%e9只是é但UrlEncoded。 Server.UrlDecode您的請求字符串。

看着

如何:為ASP.NET網頁全球化選擇編碼

短:

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM