Bazı metin dosyalarını okumak ve bir dizeye dönüştürmek için java.io.FileReader'ı kullanmayı denedim, ancak sonucun yanlış kodlandığını ve hiç okunamaz olduğunu buldum.
İşte ortamım:
Windows 2003, işletim sistemi kodlaması: CP1252
Java 5.0
Dosyalarım UTF-8 kodlu veya CP1252 kodlu ve bazıları (UTF-8 kodlu dosyalar) Çince (Latin olmayan) karakterler içerebilir.
İşimi yapmak için aşağıdaki kodu kullanıyorum:
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();
}
Yukarıdaki kod çalışmıyor. Metin UTF-8 kodlu olsa bile Dosya Okuyucunun kodlamasının CP1252 olduğunu buldum. Ancak java.io.FileReader'ın JavaDoc'u şunu söylüyor:
Bu sınıfın yapıcıları, varsayılan karakter kodlamasının ve varsayılan bayt arabellek boyutunun uygun olduğunu varsayar.
Bu, FileReader kullanıyorsam karakter kodlamasını kendim ayarlamam gerekmediği anlamına mı geliyor? Ama şu anda yanlış kodlanmış veriler aldım, durumumla başa çıkmanın doğru yolu nedir? Teşekkürler.