我有一个ActionResult,它返回嵌入式设备的XML。相关代码是:
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?
答案 0 :(得分:11)
您将HTTP响应的编码与响应中包含的XML编码混淆。序列化XML时,需要指定它需要进行UTF-8编码。在ContentResult上设置编码只是告诉另一端的浏览器如何编码响应,它不会将XML从一种编码转换为另一种编码。如果您查看ContentResult的代码,您将看到它只是执行Response.Write(内容) - 在使用您指定的编码和内容类型设置Response头之后。