spacer
spacer
開発者の談話室

文字化け: 2008年2月アーカイブ

ASP.NETはweb.config中のglobalizationを指定するだけで、文字コードを簡単に変更することができます。

      <globalization requestEncoding="UTF-8" responseEncoding="UTF-8"/>

PC向けのサイトではなにも考えずにUTF-8でサイトを構築してもいいのですが、携帯向けサイトですと、SHIF-JISでエンコードする必要があります。

      <globalization requestEncoding="Shift-JIS" responseEncoding="Shift-JIS"/>

この場合、ASP.NETのサーバオブジェクトは、クライアントからのポストデータをShift-JISエンコードとして自動処理します。

単一のページで、PCと携帯の両対応を目論む方の中には、「PC向けにはUTF-8で、携帯向けにはShift-JISで表示したい」と考えるかもしれません。(迷信ですが、SEO的にUTF-8のほうが良いと言われているため)

この場合、globalizationではUTF-8を指定しておき、UserAgentから携帯電話端末を識別して、Responseオブジェクトに1行追加するだけでShift-JISにすることができます。

      Response.ContentEncoding = System.Text.Encoding.GetEncoding( "Shift-JIS" );

ただし、これを行うと、Softbank&Vodafone端末で文字化けがおこります!

理由は、.NET FrameworkはDoCoMoとKDDIとJ-PHONEはご存知なのですが、「Vodafone?Softbank?だれそれ?」状態です。ですので、browser情報を追加する必要があります。

ASP.NETフォルダの追加からApp_Browsersフォルダを追加して、その中にVodafoneとSoftbankのための情報を追加してください。特に重要なのは下記の1行です。

        <capability name="preferredResponseEncoding"           value="shift_jis" />

アプリケーション単体ではなく、サーバ自体に設定を追加する場合は、こちらの記事を参考にしてください。

以上、ASP.NET 2.0の話です。ASP.NET 1.1の環境ではBrowser Capsで対応してください。

その他資料:

MSDNブラウザファイルのスキーマー

BrwoserCaps
 



 
spacer
spacer