Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら RSSフィードのご登録はこちらから
公開日: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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA