java中的opencsv忽略字段值中的反斜杠
我正在使用opencsv读取csv文件。
我无视第一行; csv文件是制表符分隔的,其中一些值用双引号括起来。
当我读取具有’\’字符的列的值时,会发生此问题,这会从值中删除。
reader = new CSVReader(new FileReader(exchFileObj),'\t','"',1);
例如在原始文件中:
address = 12\91buenosaires
它变成:
address = 1291buenosiares
在csvreader生成的字符串数组中。 如何修改它以便能够读取’\’字符?
CSVReader还有一个构造函数 ,您可以通过它来设置要使用的转义字符。 如果你使用它并将转义字符设置为你不使用的东西,你将在输入中得到反斜杠字符。
我有同样的问题,找不到另一个我可以保证不会出现在我的csv文件中的角色。 根据sourceforge上的一篇文章,您可以使用带有’\ 0’的显式构造函数来指示您不需要任何转义字符。
http://sourceforge.net/tracker/?func=detail&aid=2983890&group_id=148905&atid=773542
CSVParser parser = new CSVParser(CSVParser.DEFAULT_SEPARATOR, CSVParser.DEFAULT_QUOTE_CHARACTER, '\0', CSVParser.DEFAULT_STRICT_QUOTES);
我做了一些粗略的测试,这似乎工作得很好,至少反斜杠肯定能够通过。
除了@JMM的答案,你必须在CSVReader的构造函数中使用这个创建的CSVParser。 唯一可用的构造函数是:
public CSVReader(Reader reader, int line, CSVParser csvParser)
您可以将该行设置为0,以便它不会跳过任何内容