【问题标题】:Apache Commons CSV parser: Not able to read the valuesApache Commons CSV 解析器:无法读取值
【发布时间】:2019-02-17 16:58:43
【问题描述】:

我正在使用 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);
        }
    }

【问题讨论】:

    标签: java-8 apache-commons-csv


    【解决方案1】:

    字符串中有一个奇怪的字符(参考:Reading UTF-8 - BOM marker)。以下语法有助于解决问题

    header = header("\uFEFF", "");
    

    【讨论】:

    • 这是什么“header()”方法?
    • 它是地图中的关键之一
    【解决方案2】:

    在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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 2016-05-12
      • 1970-01-01
      相关资源
      最近更新 更多