3

这是我的问题。我在 ASP.NET / C# 中有一个网站,它通过 GET/POST 接收一些数据

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

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

数据也被完全破坏,无法恢复已发送的内容:/

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

我尝试设置 Request.ContentEncoding (阅读前),但无济于事。

4

5 回答 5

3

这里唯一可行的是将以下代码添加到 web.config:

<configuration>
  <system.web>
    <globalization requestEncoding="iso-8859-1"/>
  </system.web>
</configuration>

然后使用

Request["varName"]

不要使用HttpUtility.UrlDecodeor HttpUtility.UrlEncode,这两个仅适用于原始查询字符串。Request[] 已经为您完成了解码。

感谢 JamesP 自己发布这个想法。

于 2010-07-26T07:56:51.397 回答
1

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

于 2008-11-04T14:31:58.730 回答
1

看着

如何:为 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

我希望这有帮助。

于 2008-11-05T09:11:03.543 回答
1

问题的原始作者在这里。

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

requestEncoding="iso-8859-1"

现在一切正常,谢谢!

于 2008-11-10T12:36:51.817 回答
0

如果我理解正确,您就是从 HTTP 请求中提取这些信息。我将假设它是编码中的 HTTP 请求正文。

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

于 2008-11-06T08:15:45.727 回答