我编写了一个 MVC 操作来接收来自服务的帖子。我的问题是该服务正在发布编码错误的多部分数据。
举个例子:
- 该服务将为表单字段“text”发布“á”。
- 我看到(使用 Wireshark)写入数据包的字节是 225,这是 ISO-8859-1 中“á”的正确字节。
- 我执行
Request.Form["text"]
并且实际上得到了一个奇怪的(不同的)字符。
我认为这是由于 .NET 在使用 utf-8 编码转换为字符串时尝试将值 225 转换为 unicode char,但不能,因为 225 对 utf-8 无效。
所以我的问题是:有没有办法覆盖将这些字节解析为字符串的过程?
最佳答案
您可以尝试添加 HttpModule 并尝试覆盖 Request 对象的 ContentEncoding 属性。虽然我不确定这是否有效。
可以在 Web.Config 的 GlobalizationSection 中设置默认编码。该设置称为 RequestEncoding,仅当您的服务的 HTTP 请求不包含 ContentType header 时才会生效。参见 http://msdn.microsoft.com/en-us/library/system.web.configuration.globalizationsection.requestencoding.aspx
您可以进一步使用内部 Web.config 将上述设置仅设置为特定目录/MVC Controller 。
关于c# - ASP.NET MVC 覆盖字段的 POST 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642240/