■質問日: |
2003/11/28 |
■最終更新日: |
2010/08/23 |
■質問内容: |
JDK1.3.1では問題なく表示できていたのに、 JDK1.4.x/1.5.xにしたところ、'-','~'やはしご高、ローマ数字などが文字化けするようになりました。 |
■回答内容: |
これらは JDK1.3.1とJDK1.4.x/1.5.xとで"Shift_JIS"の取り扱いが変わったためと 思われます。 参考URL: http://www.atmarkit.co.jp/fjava/rensai2/eclipse03/eclipse03.html 次の3箇所を変更してください。 (1) JSPヘッダのcharsetをShift_JISからWindows-31Jに変更する。 こうすることで、Webブラウザへの表示時に"Windows-31J"の文字コードを用いて文字の変換を行います。 (2) ServletBase継承クラスのinit()などで、 Html.ENCODE2 = "Windows-31J"; を設定する。 こうすることで、Webブラウザからの入力文字の解析時に"Windows-31J"の文字コードを用いて 解析を行います。 ***** 2008.07.28 追記 *****>>> (3) ServletBase継承クラスのinit()などで、 DataHandler.ENCODE_FOR_GETBYTES="Windows-31J"; を設定する。 こうすることで、Webブラウザからの入力文字バイト数のチェックに、 "Windows-31J"の文字コードを適用します。 ("Shift_JIS"のままだと、"-~①"などを入力した場合に、 2バイトのはずなのに1バイトと判定され、長さチェックが誤動作します。) ***** 2008.07.28 追記 *****<<< Html.ENCODE2はWebブラウザ画面からの入力文字解析に使用する文字コードを定義しますが 現在は"Shift_JIS"がデフォルトになっています。 ***** 2008.04.02 追記 *****>>> 上記の(1),(2),(3)の代わりに、 アプリケーションサーバーの起動パラメータに -Dsun.nio.cs.map=Windows-31J/Shift_JIS を付加する方法もあります。 ***** 2008.04.02 追記 *****<<< その他、DBとの読み書き時に発生する文字化けについては、FAQ No.16をご覧ください。 |
■添付資料: |
なし |