2009-10-13 4 views
3

J'ai un ActionResult qui renvoie XML pour un périphérique intégré. Le code correspondant est:Pourquoi le contrôleur ContentResult dans ASP.NET MVC renvoie UTF-16 lorsque UTF-8 est spécifié?

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

Même si UTF-8 est spécifié, le XML résultant est:

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

Le MVC ASP.NET est compilé comme AnyCPU et fonctionne sur un serveur Windows 2008. Pourquoi ne retourne-t-il pas le code XML encodé en UTF-8?

Pourquoi?

Répondre

10

Vous confondez le codage de la réponse HTTP avec le codage du code XML contenu dans la réponse. Lorsque vous sérialisez le XML, vous devez spécifier qu'il doit être codé en UTF-8. Définir l'encodage sur ContentResult informe simplement le navigateur à l'autre extrémité de la façon dont la réponse a été encodée, il ne transforme pas le XML d'un codage à un autre. Si vous regardez le code de ContentResult, vous verrez qu'il fait simplement un Response.Write (Content) - après avoir défini les en-têtes Response avec les types de codage et de contenu que vous spécifiez.

+0

Merci beaucoup! Je savais que je confondais quelque chose d'aussi évident! –

Questions connexes