SORU
30 Mart 2009, PAZARTESİ


Java FileReader kodlama sorunu

Java kullanmaya çalıştım.ıo.FileReader bazı metin dosyaları okur ve bir dize dönüştürmek için, ama sonuç yanlış kodlanmış ve okunabilir buldum.

İşte benim ortam:

  • Windows 2003, OS kodlama: CP1252

  • Java 5.0

Dosyalarımı UTF-8 olarak kodlanmış veya CP1252 kodlanmış, ve bazıları (UTF-8 kodlanmış dosyaları) (non-Latin) Çince karakterler içeriyor olabilir.

Aşağıdaki kod işimi yapmak için 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. Bu FileReader kodlama metin UTF-8 kodlu ise bile CP1252 buldum. Ama java JavaDoc.ıo.FileReader diyor ki:

Bu sınıfın kurucular varsayalım varsayılan karakter kodlaması bu ve varsayılan bayt arabellek boyutu uygun.

Bu FileReader kullanıyorum eğer karakter kodlamasını ayarlamak için kendimi gerektirdiği olmadığım anlamına mı geliyor? Ama doğru yolu benim situtaion ile başa çıkmak için ne kadar yanlış kodlanmış veri şu anda, ben mi? Teşekkürler.

CEVAP
30 Mart 2009, PAZARTESİ


Evet, senkodlama belirtmek gerekirdosya okumak istiyorum.

Evet, bunu yapmanız gerektiği anlamına geliyorbiliyorumdosya kodlama okumak istiyorum.

Hayır, genel bir yolu yoktursanırımherhangi bir kodlama "düz metin" dosyası.

The constructors of FileReader her zaman genellikle hangi platform varsayılan kodlama kullanınkötü bir fikir.

FileReader yerine*, <encoding>)new InputStreamReader(*8 kullanmanız gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006