Apache Commons CSV 解析器:无法读取值
Apache Commons CSV parser: Not able to read the values
我正在使用 apache commons CSV 解析器将 CSV 转换为地图。在地图中,我无法通过 intellij 调试器读取一些值。如果我手动输入 map.get("key") 则值为空。但是,如果我从地图上复制粘贴密钥,我就会获取数据。无法理解出了什么问题。任何指针都会有所帮助。谢谢
这是我的 CSV 解析器代码:
private CSVParser parseCSV(InputStream inputStream) {
System.out.println("What is the encoding "+ new InputStreamReader(inputStream).getEncoding());
try {
return new CSVParser(new InputStreamReader(inputStream), CSVFormat.DEFAULT
.withFirstRecordAsHeader()
.withIgnoreHeaderCase()
.withSkipHeaderRecord()
.withTrim());
} catch (IOException e) {
throw new IPRSException(e);
}
}
字符串中有一个奇怪的字符(参考:Reading UTF-8 - BOM marker)。以下语法有助于解决问题
header = header("\uFEFF", "");
在java中使用UnicodeReader:
String path = "demo.csv";
CSVFormat.Builder builder = CSVFormat.RFC4180.builder();
CSVFormat format = builder.setQuote(null).setHeader().build();
InputStream in = new FileInputStream(new File(path));
CSVParser parser = new CSVParser(new BufferedReader(new UnicodeReader(in)), format);
我正在使用 apache commons CSV 解析器将 CSV 转换为地图。在地图中,我无法通过 intellij 调试器读取一些值。如果我手动输入 map.get("key") 则值为空。但是,如果我从地图上复制粘贴密钥,我就会获取数据。无法理解出了什么问题。任何指针都会有所帮助。谢谢
这是我的 CSV 解析器代码:
private CSVParser parseCSV(InputStream inputStream) {
System.out.println("What is the encoding "+ new InputStreamReader(inputStream).getEncoding());
try {
return new CSVParser(new InputStreamReader(inputStream), CSVFormat.DEFAULT
.withFirstRecordAsHeader()
.withIgnoreHeaderCase()
.withSkipHeaderRecord()
.withTrim());
} catch (IOException e) {
throw new IPRSException(e);
}
}
字符串中有一个奇怪的字符(参考:Reading UTF-8 - BOM marker)。以下语法有助于解决问题
header = header("\uFEFF", "");
在java中使用UnicodeReader:
String path = "demo.csv";
CSVFormat.Builder builder = CSVFormat.RFC4180.builder();
CSVFormat format = builder.setQuote(null).setHeader().build();
InputStream in = new FileInputStream(new File(path));
CSVParser parser = new CSVParser(new BufferedReader(new UnicodeReader(in)), format);