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
[通知用URL]
Tweet
最終更新時間:2008年05月25日 22時04分49秒