2013-10-29 20 views
5

Tôi đang sử dụng supercsv 2.1.0 để phân tích cú pháp tệp CSV với các từ tiếng Đức trong đó.Cách sử dụng mã hóa trong supercsv getHeader

Tệp CSV đã cho có tiêu đề ở dòng đầu tiên. Trong tiêu đề này, có một số nguyên âm đột biến như: Ä, ä, Ü, ö, v.v. Ví dụ: Betrag; Währung; Thông tin

Trong mã hóa của tôi, tôi đang cố gắng để có được những tiêu đề của csv như thế này:

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

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

Đây là vấn đề của tôi với các mảng tiêu đề. Tất cả tiêu đề có nguyên âm đột biến không được mã hóa chính xác bằng bộ ký tự utf8.

Có cách nào để tôi có thể đọc chính xác tiêu đề không?

Dưới đây là một thử nghiệm đơn vị giả:

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(); 
    } 
} 
} 

Kind regards, Alex

+0

Bạn đã thử sử dụng '" UTF-8 "' thay vì '" UTF8 "'? –

+0

Không, "UTF-8" không khắc phục được sự cố –

Trả lời

4

Nghe có vẻ như tệp của bạn không thực sự sử dụng mã UTF-8.

Tôi có thể sao chép kịch bản của bạn bằng cách tạo tệp CSV bằng cách sử dụng mã hóa ISO-8859-1 và chạy mã của bạn và xuất hiện dưới dạng W?hrung.

Nếu sau đó tôi cập nhật InputStreamReader để sử dụng "ISO-8859-1" làm mã hóa, sau đó nó xuất hiện chính xác như Währung.

+0

Cảm ơn rất nhiều. Đó là lỗi của tôi giả sử tập tin được mã hóa UTF-8, nhưng ist là ISO-8859-1. –

+0

Đừng lo lắng :) Đừng quên đóng trình đọc bằng cách này (bạn có thể sử dụng các tài nguyên thử khi bạn đang sử dụng Java 7). –

+0

cùng ở đây ... giả sử utf-8 và hóa ra tệp được mã hóa ISO-8859-1 –

Các vấn đề liên quan