Saya mencoba menggunakan java.io.FileReader untuk membaca beberapa file teks dan mengonversinya menjadi string, tetapi saya menemukan hasilnya salah dikodekan dan tidak dapat dibaca sama sekali.
Inilah lingkungan saya:
Windows 2003, pengkodean OS: CP1252
Java 5.0
File saya dikodekan UTF-8 atau dikodekan CP1252, dan beberapa di antaranya (file yang dikodekan UTF-8) dapat berisi karakter China (non-Latin).
Saya menggunakan kode berikut untuk melakukan pekerjaan saya:
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();
}
Kode di atas tidak berfungsi. Saya menemukan pengkodean FileReader adalah CP1252 bahkan jika teksnya dikodekan UTF-8. Tetapi JavaDoc dari java.io.FileReader mengatakan bahwa:
Konstruktor kelas ini mengasumsikan bahwa pengkodean karakter default dan ukuran byte-buffer default adalah tepat.
Apakah ini berarti bahwa saya tidak diharuskan untuk mengatur pengkodean karakter sendiri jika saya menggunakan FileReader? Tapi saat ini saya mendapatkan data penyandian yang salah, apa cara yang benar untuk menangani situasi saya? Terima kasih.