【问题标题】:Parse CSV file containing a Unicode character using OpenCSV使用 OpenCSV 解析包含 Unicode 字符的 CSV 文件
【发布时间】:2010-12-14 07:41:13
【问题描述】:

我正在尝试在 NetBeans 6.0.1 中使用 OpenCSV 解析 .csv 文件。我的文件包含一些 Unicode 字符。当我将其写入输出时,字符会以其他形式出现,例如 (HJ1'-E/;)。当我在记事本中打开这个文件时,它看起来没问题。

我使用的代码:

CSVReader reader=new CSVReader(new FileReader("d:\\a.csv"),',','\'',1);
    String[] line;
    while((line=reader.readNext())!=null){
        StringBuilder stb=new StringBuilder(400);
        for(int i=0;i<line.length;i++){
            stb.append(line[i]);
            stb.append(";");
        }
        System.out.println( stb);
    }

【问题讨论】:

    标签: java netbeans csv opencsv


    【解决方案1】:

    首先您需要知道您的文件采用什么编码,例如 UTF-8 或 UTF-16。从什么开始生成这个文件?

    之后,它就相对简单了 - 您需要创建一个 FileInputStream 包裹在一个 InputStreamReader 中,而不仅仅是一个 FileReader。 (FileReader 始终使用系统的默认编码。)在创建 InputStreamReader 时指定要使用的编码,如果您选择了正确的编码,那么一切都应该开始工作了。

    请注意,您不需要使用 OpenCSV 来检查这一点 - 您可以自己阅读文件的文本并将其全部打印出来。我不确定我是否相信 System.out 能够处理非 ASCII 字符 - 您可能希望找到一种不同的检查字符串的方法,例如将字符的各个值打印为整数(最好是十六进制) 然后将它们与charts at unicode.org 进行比较。另一方面,你可以尝试正确的编码,看看会发生什么...

    编辑:好的,所以如果您使用的是 UTF-8:

    CSVReader reader=new CSVReader(
        new InputStreamReader(new FileInputStream("d:\\a.csv"), "UTF-8"), 
        ',', '\'', 1);
    String[] line;
    while ((line = reader.readNext()) != null) {
        StringBuilder stb = new StringBuilder(400);
        for (int i = 0; i < line.length; i++) {
             stb.append(line[i]);
             stb.append(";");
        }
        System.out.println(stb);
    }
    

    (我希望你有一个 try/finally 块来关闭你真实代码中的文件。)

    【讨论】:

    • 我通过这个解决方案得到The constructor CSVReader(InputStreamReader, char) is undefined
    • @Code_Mode:我的代码不会尝试调用这样的构造函数——它会尝试调用CSVReader(InputStreamReader, char, char, int)那个对你有用吗?
    • 即使这样,也会出现同样的错误。我使用的是OpenCSV4.1,它的构造函数没有这个构造函数
    • @Code_Mode:查看文档和source,它应该在那里,但已弃用。考虑改用 CSVReaderBuilder。
    猜你喜欢
    • 2018-06-04
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2018-06-19
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    相关资源
    最近更新 更多