memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

LoadStrings.java

macのProcessingでSJISのテキストファイルを読み込む必要があったのですが、ProcessingのloadStringsでは release 0134よりUTF-8であることを期待しています。そのため単に読み込むと文字化け。。。しかたがないのでコード変換クラスを作って。。。と思ったのですが、何やらわからない結果になりました。

私のmacに入っているJDK6では(なぜか?)SJISがデフォルトになっています。文字コードを指定してSJISからUTF-8に変換してみたのですがなぜか文字化けに。。。で、何も指定しないでそのまま出力すると文字化けせずに表示されます。誰が変換しているのでしょう。。。?なぞです。

import java.io.*;
import java.util.*;

class LoadStrings
{
  public static String[] load(String fname)
  {
    ArrayList list = new ArrayList();
    try {
      FileReader in = new FileReader(fname);
      BufferedReader br = new BufferedReader(in);
      String line;
      while ((line = br.readLine()) != null) {
        list.add(line);
      }
      br.close();
      in.close();
    } catch (IOException e) {
      System.out.println(e);
    }
    return (String[])list.toArray(new String[0]);
  }
}

■使い方

String[] list = LoadStrings.load("test.csv");