java.io.FileReaderを使用していくつかのテキストファイルを読み取って文字列に変換しようとしましたが、結果が正しくエンコードされておらず、まったく読み取れません。
これが私の環境です:
Windows 2003、OSエンコーディング:CP1252
Java 5.0
私のファイルはUTF-8エンコードまたはCP1252エンコードされており、一部のファイル(UTF-8エンコードファイル)には中国語(非ラテン)文字が含まれている場合があります。
次のコードを使用して作業を行います。
private static String readFileAsString(String filePath)
throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
FileReader reader = new FileReader(filePath);
//System.out.println(reader.getEncoding());
BufferedReader reader = new BufferedReader(reader);
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
上記のコードは機能しません。テキストがUTF-8でエンコードされていても、FileReaderのエンコードはCP1252であることがわかりました。しかし、java.io.FileReaderのJavaDocは次のように述べています。
このクラスのコンストラクタは、デフォルトの文字エンコーディングとデフォルトのバイトバッファサイズが適切であることを前提としています。
これは、FileReaderを使用している場合、自分で文字エンコーディングを設定する必要がないことを意味しますか?しかし、私は現在誤ってエンコードされたデータを取得しました、私の状況に対処する正しい方法は何ですか?ありがとう。