gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:48:49 24 4
gpt4 key购买 nike

我在从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com