JDBCでOracleとデータのやり取りをする場合、文字化けすることがある。 対処法はいろいろ。 ○環境変数を設定してみる Oracleクライアントを経由している場合など set NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE または set NLS_LANG=JAPANESE_JAPAN.JA16SJIS など !!UnicodeとMS932 !文字化けの原因 ・SJIS <-> Unicode 波ダッシュ(SJIS:8160) <-> 波ダッシュ(U+301C)(“下がって上がる”形) なし <-> 全角チルダ(U+FF5E)(“上がって下がる”形) ・MS932 <-> Unicode なし <-> 波ダッシュ(U+301C)(“下がって上がる”形) 波ダッシュ(MS932:8160) <-> 全角チルダ(U+FF5E)(“上がって下がる”形) 文字化けのパターン 波ダッシュ(SJIS:8160) -> 波ダッシュ(U+301C)-> なし(MS932) 波ダッシュ(MS932:8160) -> 全角チルダ(U+FF5E)-> なし (SJIS) !対処法 ○化ける文字だけを直接変換 SJISとMS932の違いによって文字化けする場合の対処法 s1 = s1.replace('\u301c', '\uff5e'); ○文字列取得時にエンコード変換 SJISとMS932の違いによって文字化けする場合の対処法 String s1 = new String(rs.getString(6).getBytes("SJIS"), "MS932"); ○Javaのデフォルトエンコードを変更する(おすすめしない) SJISとMS932の違いによって文字化けする場合の対処法 java6 -Dfile.encoding=SJIS -cp C:\data\Development_tools\java\JDBC\oracle\ojdbc14.jar;. test2 ○参考 http://www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html {{category2 プログラミング言語,Java}}