トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF 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

[カテゴリ: プログラミング言語 > Java]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2008年05月25日 22時04分49秒