2014-05-20 51 views
2

從csv讀取ö,ü和ä時出現問題。程序應該使用OpenCSV庫讀取csv文件,然後將其解析爲客戶列表(每行都是一個客戶),最後將其寫入另一個.csv文件,添加額外的數據。用ä,ö,ü解析CSV

public CSVConverter(String fileNameIn, String fileNameOut, int header){ 
    try { 
     this.fileNameIn = fileNameIn; 
     this.fileNameOut = fileNameOut; 
     this.header = header; 
     reader=new CSVReader(new InputStreamReader(new FileInputStream(this.fileNameIn), "UTF-8"), ';'); 
     writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(this.fileNameOut), "UTF-8")); 
    } catch (FileNotFoundException ex) { 
     System.out.println("File not found!"); 
    } catch (UnsupportedEncodingException ex) { 
     Logger.getLogger(CSVConverter.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 


public void readTXT(){ 
    try { 
     kundenListe = (ArrayList<String[]>) reader.readAll(); 
    } catch (IOException ex) { 
     Logger.getLogger(CSVConverter.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 

public void writeCSV(){ 
    this.parseCustomerList(); 
    for(Kunde customer : this.customerList){ 
     try { 
      writer.write(customer.toString()); 
      System.out.println(customer.toString()); 
     } catch (IOException ex) { 
      Logger.getLogger(CSVConverter.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 
} 

private Kunde parseCustomer(String[] row){ 
    Kunde tempCust = new Kunde(); 
     tempCust.setKDNR(row[0].trim()); 
     tempCust.setName_1(row[1].trim()); 
     tempCust.setName_2(row[2].trim()); 
     //... 

     return tempCust; 
} 
private void parseCustomerList(){ 
    for(String[] kunde : this.kundenListe){ 
      this.customerList.add(this.parseCustomer(kunde)); 
    } 
} 

當我試圖通過System.out.println(customer.toString());寫入了文件中的行它也不會打印,只是一個矩形。但正常的System.out.println("öäü");工作正常。

非常感謝您提前!

+1

你是否閱讀了正確的字符集文件? –

+0

請顯示您的課程'Kundle' – AlexR

+0

我已經使用UTF-8字符集從訪問中導出了csv-filem。昆德只是一個擁有屬性,吸氣者和二傳手的階級,現在還沒有。 –

回答

0

顯然cvs文件,你正在閱讀,沒有用UTF-8編碼。

檢查代替UTF-8

櫃面它不知道或它是被從具有不同編碼的各種系統所產生的,其字符集被使用和使用相同的(或替換的字符集),而讀取,則可以使用this encoding detector library來確定。請注意,如果沒有使用非ASCII字符,此API可能會返回null。

+0

我已經使用utf-8字符集從訪問中導出了csv文件。 –

+1

使用任何高級文本編輯器驗證字符編碼一次。我懷疑輸入CSV包含非UTF編碼的字符。基本上,這種類型的問題發生在編碼字節表示與用於讀取的字符集所期望的不同時。 –

+0

謝謝!我發現了錯誤! :-) –

相關問題