文字化けした場合の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"));