C#HttpRequest和不同的编码

时间:2008-11-04 13:22:06

标签: c# asp.net httprequest

这是我的问题。我有一个ASP.NET / C#网站,它通过GET / POST

接收一些数据

这是“用户填写”的数据,但不是通过网页,它是与我的服务器联系的软件。

问题是,该软件正在发送以ISO-8859-1编码的数据(因此Café将作为Caf%e9发送),其余的SW / DB是Unicode

此外,数据完全被破坏,恢复已发送的内容:/

处理这个问题的最佳方法是什么?

我尝试设置Request.ContentEncoding(在阅读之前),但没有用。

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

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

答案 2 :(得分:1)

看看

How to: Select an Encoding for ASP.NET Web Page Globalization

短:

在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

我希望这会有所帮助。

答案 3 :(得分:1)

此处问题的原作者。

帮助我的是Georg建议设置Web.config变量,我把

requestEncoding = “ISO-8859-1”

现在一切正常,谢谢!

答案 4 :(得分:0)

如果我理解正确,您将从HTTP请求中提取此信息。我将假设它是编码中的HTTP请求主体。

您可以使用System.Text.Encoding.GetEncoding(...)来检索ISO-8859-1的编码对象。然后在该编码对象上调用GetDecoder(),并使用它来解释请求体。理想情况下,您可以从请求中的标头值确定从Encoding.GetEncoding(...)加载的编码类型,因此支持具有不同配置的服务器。