Кодировка сообщения HttpStatusCodeResult - PullRequest
0 голосов
/ 25 января 2019

Мне нужно вернуть объект 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; и т. Д., Но все еще ничего.

1 Ответ

0 голосов
/ 26 января 2019

Вы не должны получать «Za¿ó³æ gêsi¹ jañ».где угодно.

Но вы не можете получить "Zażółć gęsią jaźń."в фразе причины строки состояния HTTP, поскольку она поддерживает только набор символов 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.Но веб-браузер, который получает это, может переопределить контент, если он недостаточно длинный , чтобы казаться полезным и современным.Вам также следует учитывать, настроен ли веб-сервер для замены страниц с ошибками.Это может помочь:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...