文字化けを調べる

あんまり

使わないけど、文字化けしたときに
どの文字コードからどの文字コードに変換すればいいのか
調べるために毎回コードを書いている気がするので
メモする

ソース

import java.io.UnsupportedEncodingException;

public class CharsetSearch {
  private static final String[] CHARSET = { "ASCII", "Unicode", "Shift_JIS", "UTF-8", "EUC-JP", "ISO-2022-JP" };

  public static String search(String text) {
    StringBuffer buffer = new StringBuffer();
    buffer.append("NORMAL:");
    buffer.append(text);
    buffer.append("\n");
    try {
      for (String charset1 : CHARSET) {
        for (String charset2 : CHARSET) {
          if (charset1 != charset2) {
            buffer.append(charset1);
            buffer.append(" -> ");
            buffer.append(charset2);
            buffer.append(":");
            buffer.append(changeCharset(text, charset1, charset2));
            buffer.append("\n");
          }
        }
      }
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    return buffer.toString();
  }

  private static String changeCharset(String text, String charset1, String charset2) throws UnsupportedEncodingException {
    return new String(text.getBytes(charset1), charset2);
  }
}

今日は

Logcatだと文字化けするけど、android上では文字化けないという罠にひっかかった。
TextViewに表示してみるのが一番だね。