4

我编写了一个 MVC 操作来接收来自服务的帖子。我的问题是该服务正在发布编码错误的多部分数据。

让我举个例子:

  • 该服务将为表单字段“文本”发布“á”。
  • 我看到(使用 Wireshark),写在数据包上的字节是 225,这是 ISO-8859-1 中“á”的正确字节。
  • Request.Form["text"]确实得到了一个奇怪的(不同的)字符。

我相信这是由于 .NET 在使用 utf-8 编码转换为字符串时尝试将值 225 转换为 unicode 字符,但不能,因为 225 对 utf-8 无效。

所以我的问题是:有没有办法将这些字节的解析覆盖为字符串?

4

1 回答 1

1

您可以尝试添加一个 HttpModule 并尝试覆盖 Request 对象的 ContentEncoding 属性。虽然我不确定这会奏效。

可以在 Web.Config 的 GlobalizationSection 中设置默认编码。该设置称为 RequestEncoding,仅当您的服务的 HTTP 请求不包含 ContentType 标头时才会生效。请参阅http://msdn.microsoft.com/en-us/library/system.web.configuration.globalizationsection.requestencoding.aspx

您可以进一步使用 Web.config 将上述设置仅设置为特定目录/MVC 控制器。

于 2012-07-25T04:35:02.300 回答