Javaで文字コードが「UTF-8」である文書データを「EUC-JP」「Shift_JIS」に
変換すると何文字か文字化けが発生する。
本来は、Javaだと自動でそれらの文字コードに変換してくれるのだが、
何個か変換できない。
もし「UTF-8」から「EUC-JP」、「Shift_JIS」に変換する場合は、
以下のサイトを参考に変換を行なってほしい。
■日本ベンダ協議会 (JVC) iconv コンバータ
http://docs.hp.com/ja/5187-0702/ch09s05.html
「表 9-7 EUC/Unicode 文字のマッピング変換」を見てほしい。
一番右がUTF-8での1文字を表している。
0x00A5 ----- 0x005C 0x005C
左の2つに一致していれば正常にEUC-JPに変換できるため、
これは、OK。
0x2014 0x2014 ----- 0x2015
一番右と左の2つを比較すると違うため、これは自動で変換できない。
これを参考に「UTF-8」から「EUC-JP」に変換するメソッドを作成してみた。
多分この方法しかないと思う。
一文字ずつcharとして見ていき、UTF-8で変換できない文字を
無理矢理EUC-JP用に変換するメソッド。
public static String UnicodeToEuc(String str) { StringBuffer result = new StringBuffer(); char c; for (int i = 0; i < str.length(); i++) { c = str.charAt(i); switch (c) { case 0x2015: c = 0x2014; break; case 0x2225: c = 0x2016; break; case 0xff0d: c = 0x2212; break; case 0xffe0: c = 0x00a2; break; case 0xffe1: c = 0x00a3; break; case 0xffe2: c = 0x00ac; break; case 0xffe4: c = 0x00a6; break; } result.append(c); } return result.toString(); }
変換後出力データを見ると、微妙に形が違うが、これしか方法がないため仕方ないね。
「Shift_JIS」に変換する時も同様に表を見ながらメソッドを完成させてほしい。
0 件のコメント:
コメントを投稿