SewiGの日記
2005-10-17 [月] [長年日記]
■ [Programming] 久しぶりにサーバサイドJava
日本語の文字化けについてど忘れしていたのでメモ。
- 「〜」などが「?」になる
UnicodeからcontentType属性で指定したコードに変換することができていない場合。InputStreamReaderなどを使ってエンコーディングを指定しましょう。
- Windowsの機種依存文字が文字化ける
エンコーディングに「Windows-31J」を指定しましょう。またJ2SE 1.4まではShift_JISがMS932のエイリアスになってるいます。サーバサイド側ではWindows-31Jで統一しといて、WebブラウザにHTMLとして吐き出すときにShift_JISにしておくと、いろんなWebブラウザに対応できて便利です。
- フォームからの入力が文字化ける
文字列がISO-8859-1として扱われている場合。request.setCharacterEncoding("Windows-31J")のようにエンコーディングを指定しておきます。setCharacterEncodingが対応してないようであれば、new String(string.getBytes("iso-8859-1"), "Windows-31J")のようにします。