公開日:2013年3月2日
ASP.NET でレスポンスヘッダーの Content-Type に文字コードを指定する方法
ASP.NET のデフォルトでレスポンスヘッダーの Content-Type は UTF-8 になっています。ですので、何も設定しない状態だと Content-Type は以下のように設定されます。
Content-Type: text/html; charset=utf-8
ですが、これを明示的に指定したい場合は、web.config で以下のように設定します。
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" />
これを Shift-jis で指定する場合は以下のように設定します。
<globalization fileEncoding="shift-jis" requestEncoding="shift-jis" responseEncoding="shift-jis" />
するとレスポンスヘッダーの Content-Type は以下のようになります。
Content-Type: text/html; charset=shift_jis
meta タグは以下のようになっていますが、ページは Shift-JIS で問題なく表示されます。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
あまり使用する機会はないと思いますが、個別のページにのみ Content-Type の文字コードを指定する方法はあります。ですが、以下のページでは @ Page ディレクティブで指定可能と記述がありますが、実際は RequestEncoding 属性がありませんというエラーが発生してしまいます。
ですが、以下のように location 要素を利用することで個別ページにも Content-Type の文字コードを指定することができるようになります。注意点は、location 要素は、system.web と同じレベルの要素なので記述位置に気をつけてください。
<location path="Default.aspx"> <system.web> <globalization fileEncoding="shift-jis" requestEncoding="shift-jis" responseEncoding="shift-jis" /> </system.web> </location>
実行結果は、以下の通りです。
Content-Type: text/html; charset=shift_jis
他のページの実行結果は以下の通りなので副作用もありません。
Content-Type: text/html; charset=utf-8
スポンサーリンク
カテゴリー:ASP.NET
コメントを残す