HttpStatusCodeResult 消息编码



我需要返回一个带有描述的 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¹ jañ."。

但是你不能在HTTP状态行原因短语中得到"Zażółć gęsią jaźń.",因为它只支持ASCII字符集和编码[RFC 7230]。(HTTP 标头字段确实具有 %-编码等机制,但没有状态行。

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

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

使用您想要的任何内容,包括 HTML。但是,接收此内容的 Web 浏览器可能会覆盖内容,如果它不够长,无法看起来有用和现代。您还应考虑 Web 服务器是否配置为替换错误页面。这可能有助于:

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

最新更新