2009-10-13 1 views
3

У меня есть ActionResult, который возвращает XML для встроенного устройства. Соответствующий код:Почему контроллер ContentResult в ASP.NET MVC возвращает UTF-16, когда указан UTF-8?

return Content(someString, "text/xml", Encoding.UTF8); 

Даже если UTF-8 указывается, полученный XML является:

<?xml version="1.0" encoding="utf-16"?> 

ASP.NET MVC компилируется как AnyCPU и работает на сервере Windows 2008.

Почему он не возвращает кодированный UTF-8 XML?

ответ

10

Вы вводите в заблуждение кодировку ответа HTTP с кодировкой XML, содержащейся в ответе. Когда вы сериализуете XML, вам нужно указать, что он должен кодироваться в кодировке UTF-8. Установка кодировки в ContentResult просто сообщает браузеру на другом конце, как был закодирован ответ, он не преобразует XML из одной кодировки в другую. Если вы посмотрите на код ContentResult, вы увидите, что он просто выполняет Response.Write (Content) - после установки заголовков ответов с указанными вами кодировками и типами содержимого.

+0

Большое спасибо! Я знал, что сбиваю с толку что-то настолько очевидное! –