我正在尝试使用java中的opencsv读取csv文件。该文件由SAS代码生成。当我尝试读取文件时,即使文件中有值,也会给我所有空值。但是,如果我打开文件并使用另存为选项重新保存,则可以正确读取文件。什么是解决方案,因为我需要完全自动化流程而无需任何人工干预。
答案 0 :(得分:0)
如果不确切知道问题是什么,很难说,但我怀疑问题是文件编码,或者可能在开头有一个字节顺序标记(BOM),表明它是unicode。您的图书馆无法解析它,这将解释您的空值。重新保存它可能会删除BOM或将其保存在另一个字符编码下。
使用十六进制编辑器打开文件,并逐个字节地检查文件在保存之前和之后包含的内容。如果您没有看到相同的值,那么这就是您的理由。
在这种情况下,解决方案是将正确的输入流(如FileReader)传递给具有正确字符编码的库。我不太熟悉SAS,但另一种选择可能是直接将导出文件的编码更改为更合理的。 See here for details