我有一个为嵌入式设备返回 XML 的 ActionResult。相关代码为:
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?
最佳答案
您混淆了 HTTP 响应的编码和响应中包含的 XML 的编码。当您序列化 XML 时,您需要指定它需要采用 UTF-8 编码。在 ContentResult 上设置编码只是告知另一端的浏览器响应的编码方式,它不会将 XML 从一种编码转换为另一种编码。如果您查看 ContentResult 的代码,您会发现它只是在使用您指定的编码和内容类型设置响应 header 之后执行 Response.Write( Content )。
关于asp.net-mvc - 当指定 UTF-8 时,为什么 ASP.NET MVC 中的 ContentResult Controller 返回 UTF-16?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561891/