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

  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • humanHardDrive

    humanHardDri

    16 Mart 2011
  • LimeFire

    LimeFire

    2 ŞUBAT 2012