【问题标题】:ASP.NET Web API and UTF16 encodingASP.NET Web API 和 UTF16 编码
【发布时间】:2014-05-30 23:48:02
【问题描述】:

我有一个 ASP.NET Web API 正在运行,并且有一个客户端遇到以下问题:

{"model":["Unable to translate bytes [E9] 
at index 300 from specified code page to Unicode."]}

在模型绑定期间似乎发生了异常,这是我默认的无自定义。

客户端也在运行 .NET,他们说内容是以UTF16....发送的,但他们不包括 HTTP 标头来表明这一点。直到他们开始在内容中使用特殊字符之前,一切都很好。

我的问题是如何处理这个问题。最初我打算添加一个DelegateHandler,它会检测到这个客户端并以某种方式将内容类型/字符集设置为UTF16,但这并没有成功。然后我想我可以从 DelegateHandler 中将请求正文转码为UTF8,但我读到无法或不推荐在处理程序中修改内容。

由于问题出现在模型绑定期间,我想知道是否可以按顺序实现自定义模型绑定器?

感谢您的帮助!

【问题讨论】:

  • ...我还应该声明客户端此时无法添加标头,因为他们已经投入生产并且遇到了这个问题。

标签: c# asp.net asp.net-web-api


【解决方案1】:

内置格式化程序使用的默认编码是 UTF-8。您可以轻松地将其更改为 UTF 16。您可以通过更改 MediaTypeFormatter 类的 SupportEncodings 属性来针对每个格式化程序进行更改。

这个link可以帮助你。

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 2014-02-22
    • 2011-07-27
    • 2014-03-18
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    相关资源
    最近更新 更多