2013-10-29 11 views
5

İçinde Almanca kelimeler içeren bir CSV Dosyası ayrıştırmak için supercsv 2.1.0 kullanıyorum.Supercsv'de kodlama nasıl kullanılır getHeader

Belirtilen CSV dosyasının ilk satırda bir başlığı vardır. Bu başlıkta, mu, ä, Ü, ö vb. Gibi bazı mutasyona uğramış ünlüler vardır. Örneğin : Betrag; Währung; Bilgisi

benim böyle csv başlığını almaya çalışıyorum şekli kodlama:

ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(new FileInputStream(file), "UTF8"), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE); 

final String[] header = inFile.getHeader(true); 

Aşağıda başlık dizisi ile benim sorundur. Mutasyonlu sesli harflere sahip tüm üstbilgiler utf8 karakter kümesi kullanılarak doğru şekilde kodlanmaz.

Başlığı doğru şekilde okuyabilme yolu var mı? İşte

sahte birim testidir:

public class TestSuperCSV { 


@Test 
public void test() { 
    String path = "C:\\Umsatz.csv"; 
    File file = new File(path); 

    try { 
     ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(
       new FileInputStream(file), "UTF-8"), 
       CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE); 
     final String[] header = inFile.getHeader(true); 
     System.out.println(header[9]); //getting "W?hrung" but needed "Währung" here 


    } catch (UnsupportedEncodingException | FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

Saygılarımızla Alex

+0

"UTF8" yerine "UTF-8" yi kullanmayı denediniz mi? –

+0

Hayır, "UTF-8" sorunu çözmez –

cevap

4

dosya aslında UTF-8 kodlamasını kullanmıyor gibi geliyor.

Ben ISO-8859-1 kodlama kullanarak ve kodunuzu çalışan CSV dosyası oluşturarak senaryo çoğaltabilir ve W?hrung olarak görünür.

Kodlama olarak "ISO-8859-1"'u kullanmak için InputStreamReader'u güncelleştirirseniz, Währung olarak doğru görünür.

+0

Çok teşekkürler. Dosyanın UTF-8 kodlu olduğunu varsaymak benim hatamdı, ancak ISO-8859-1 idi. –

+0

Endişelenmeyin :) Okuyucuyu bu arada kapatmayı unutmayın (Java 7'yi kullanırken kaynakları kullanmayı deneyin). –

+0

burada aynı ... varsayılan utf-8 ve dosya ISO-8859-1 kodlu çıkıyor –