文字化けした場合のJavaのTipsをまとめる
総当たりで、出力させて、理解できる組合せを探すのに使います。
これでもわからない場合の対策は下記に書きます。
/** * * @param value */ public static void printMulti(String value){ ArrayList<String> list = new ArrayList<String>(); list.add("UTF-8"); list.add("Shift_JIS"); list.add("EUC_JP"); list.add("ISO-2022-JP"); list.add("Windows-31J"); list.add("MS932"); list.add("UNICODE"); list.add("UTF16"); for (int i = 0; i < list.size(); i++) { String item1 = list.get(i); for (int j = 0; j < list.size(); j++) { String item2 = list.get(j); try { System.out.println("["+ item1 +"][" + item2 + "]" +new String(value.getBytes(item1),item2)); } catch (UnsupportedEncodingException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } }
上記の総当たりでうまくいかなかったら、InputStreamReader?の"MS932"の指定が足りないのでは?と疑ってみます。
このしていは、JavaのProcessBuiler?でシェルをWindows上で実行したときに必要になった対応です。
BufferedReader br = new BufferedReader(new InputStreamReader(is,"MS932"));