asp.net-mvc - HttpStatusCodeResult 消息编码

标签 asp.net-mvc character-encoding http-status-codes

我需要返回一个带有描述的 HttpStatusCodeResult 对象,其中包含特殊(变音符号)字符。我不知道如何设置正确的编码。

return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Zażółć gęsią jaźń.");

应该返回:

Zażółć gęsią jaźń.

但我得到:

Za¿ó³æ gêsi¹ jañ.

我尝试使用 Response.Charset = System.Text.Encoding.UTF8.WebName; 等,但仍然一无所获。

最佳答案

你不应该得到“Za¿ó³æ gêsi 1 jañ”。任何地方。

但是你无法获得“Zażółć gęsią jaźń”。在 HTTP 状态行原因短语中,因为它仅支持 ASCII 字符集和编码 [ RFC 7230 ]。 (HTTP header 字段确实有 % 编码等机制,但没有状态行。)

因此,您可以省略原因短语并将消息放入正文中:

Response.StatusCode = (Int32)HttpStatusCode.BadRequest;
return Content("Zażółć gęsią jaźń. And, the quick brown fox jumps over the lazy dog. 😉");

使用您想要的任何内容,包括 HTML。但是,如果它是 not long enough,则接收到此内容的 Web 浏览器可能会覆盖该内容。看起来有用且现代。您还应该考虑 Web 服务器是否配置为替换错误页面。这可能会有所帮助:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

关于asp.net-mvc - HttpStatusCodeResult 消息编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367303/

相关文章:

c# - 请求 URL "HelloWorld"如何在 ASP.Net MVC 中实例化 HelloWorldController 对象?

javascript - £ 在输入 [type=text] 上

mysql - html5 显示 � 而不是法语字符

node.js - 为什么要发送 API 状态码?

HTTP 状态代码优先级和处理

asp.net-mvc - 如何像绘制 Ember.TextField 一样绘制 Password 字段?

asp.net-mvc - 我们如何使用 ASP.NET MVC 4 和 MEF 2 支持模块化和可测试模式?

rest - 当不支持 HTTP 方法时向客户端发送消息

asp.net-mvc - 模型的依赖注入(inject)

php - 使用 PHP 将 latin1_swedish_ci 转换为 utf8