我需要返回一个带有描述的 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>