トップ 一覧 置換 検索 ヘルプ RSS ログイン

JDBCで文字化けの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
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
{{category Java}}
{{category2 プログラミング言語,Java}}