java - 使用 ä, ö, ü 解析 CSV

标签 java csv

我在从 csv 中读取 ö、ü 和 ä 时遇到问题。程序应该使用 OpenCSV 库读取 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("öäü"); 工作正常。

非常感谢您!

最佳答案

您正在阅读的显然是 cvs 文件,未使用 UTF-8 编码。

检查使用了哪个字符集并在阅读时使用相同的(或替换的字符集),而不是 UTF-8

如果它是未知的或者它是从具有不同编码的各种系统生成的,您可以使用 this encoding detector library确定。请注意,如果没有使用非 ASCII 字符,此 API 可能会返回 null。

关于java - 使用 ä, ö, ü 解析 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23758109/

相关文章:

java - 如何在 android socket.io 中使用 options.query?

json - 删除/替换 Azure 逻辑应用中解析的 JSON 输出中的字符

java - 文件上传 "multipart/form"异常 org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException

java - 这个查询可以进行 SQL 注入(inject)吗?

java - 读取 CSV 并将字符串转换为 double

android - 如何在 Android 上将多维 JSON 数组保存为 CSV 文件?

python - 将字符串列表写入 csv

java - 如何将 List<String> 列表转换为 csv 字符串

java - 以下对于 Largest in array of unsorted numbers 的时间复杂度

java - 如何摆脱 Java Nim 编程中的递归?