HttpStatusCodeResult 消息编码
HttpStatusCodeResult message encoding
我需要 return 一个带有描述的 HttpStatusCodeResult 对象,其中包含特殊(变音符号)字符。我不知道如何设置正确的编码。
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Zażółć gęsią jaźń.");
应该return:
Zażółć gęsią jaźń.
但我得到:
Za¿ó³æ gêsi¹ jañ.
我尝试了 Response.Charset = System.Text.Encoding.UTF8.WebName;
等等,但仍然没有。
你不应该得到“Za¿ó³æ gêsi¹ jañ”。任何地方。
但您无法获得“Zażółć gęsią jaźń”。在 HTTP 状态行原因短语中,因为它只支持 ASCII 字符集和编码 [RFC 7230 ]。 (HTTP header 字段确实有 % 编码等机制,但状态行没有。)
因此,您可以省略原因短语并将消息放在 body:
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>
我需要 return 一个带有描述的 HttpStatusCodeResult 对象,其中包含特殊(变音符号)字符。我不知道如何设置正确的编码。
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Zażółć gęsią jaźń.");
应该return:
Zażółć gęsią jaźń.
但我得到:
Za¿ó³æ gêsi¹ jañ.
我尝试了 Response.Charset = System.Text.Encoding.UTF8.WebName;
等等,但仍然没有。
你不应该得到“Za¿ó³æ gêsi¹ jañ”。任何地方。
但您无法获得“Zażółć gęsią jaźń”。在 HTTP 状态行原因短语中,因为它只支持 ASCII 字符集和编码 [RFC 7230 ]。 (HTTP header 字段确实有 % 编码等机制,但状态行没有。)
因此,您可以省略原因短语并将消息放在 body:
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>