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 に答える