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