3

我有一个为嵌入式设备返回 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?

4

1 回答 1

11

您将 HTTP 响应的编码与响应中包含的 XML 的编码混淆了。当您序列化 XML 时,您需要指定它需要进行 UTF-8 编码。在 ContentResult 上设置编码只是通知另一端的浏览器响应是如何编码的,它不会将 XML 从一种编码转换为另一种编码。如果您查看 ContentResult 的代码,您会发现它只是在使用您指定的编码和内容类型设置 Response 标头之后执行 Response.Write(Content)。

于 2009-10-13T18:02:40.323 回答