趣旨

文字化けした場合のJavaのTipsをまとめる

基本

javaの実行時のコマンド引数に

-Dfile.encoding=UTF-8

を入れ忘れると文字化けになる場合がある。(MS932で出力される場合が多い)

引数を手当たり次第に変換させてみる。

コード

総当たりで、出力させて、理解できる組合せを探すのに使います。

これでもわからない場合の対策は下記に書きます。

	/**
	 *
	 * @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?で受け取るコードを指定する

上記の総当たりでうまくいかなかったら、InputStreamReader?の"MS932"の指定が足りないのでは?と疑ってみます。

このしていは、JavaのProcessBuiler?でシェルをWindows上で実行したときに必要になった対応です。

BufferedReader br = new BufferedReader(new InputStreamReader(is,"MS932"));
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-03-10 (月) 13:31:51 (2782d)