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

ISO-8859-1の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
JDBCでOracleとデータのやり取りをする場合、文字化けすることがある。
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000702.html

対処法はいろいろ。
○環境変数を設定してみる
Oracleクライアントを経由している場合など
 set NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
または
 set NLS_LANG=JAPANESE_JAPAN.JA16SJIS
など
文字コードのひとつ。
ASCIIに、ウムラウト等の付いた文字の入った拡張部分を含むもの。つまりASCIIの8ビット版。
IANAによって指定された名称である。"latin1"と同じ文字コードである。
 
この文字コードをそのまま使うことは少ない。
この文字コードは、Stringクラスの中に、他の文字コードが混ざってしまった場合に、それを「byte型の配列としてそのまま取り出す」ために使用することが多い。

!!UnicodeとMS932
!文字化けの原因
・SJIS <-> Unicode
 波ダッシュ(SJIS:8160)  <-> 波ダッシュ(U+301C)(“下がって上がる”形) 
 なし                     <-> 全角チルダ(U+FF5E)(“上がって下がる”形)
(中略) 

・MS932 <-> Unicode
 なし                     <-> 波ダッシュ(U+301C)(“下がって上がる”形)
 波ダッシュ(MS932:8160) <-> 全角チルダ(U+FF5E)(“上がって下がる”形)
そういった場合のデバッグ時には、このStringクラスの中に格納された文字列を、全く変更せずに直接byte型の配列として取得する必要がある。
その場合に指定するのがこの"ISO-8859-1"である。この文字列をStringクラスのgetBytes()メソッドの引数に渡すことで、中身を変更することなく、byte型の配列として取得することができる。


文字化けのパターン
 波ダッシュ(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}}