在java中读取CSV文件会在每个字符之间添加空格
我正在阅读从google trend下载的CSV文件,以下是在记事本中打开文件时的内容(仅前两行): 法拉利法拉利(标准错误)在java中读取CSV文件会在每个字符之间添加空格,java,csv,readline,filereader,Java,Csv,Readline,Filereader,我正在阅读从google trend下载的CSV文件,以下是在记事本中打开文件时的内容(仅前两行): 法拉利法拉利(标准错误) 0.7352% 当我使用readline读取文件时,读取的行包含每个字符之间的空格,在上述情况下,输出为: f e r a r i f e r a r i(s t d e r o r) 0 . 7.3.5.2% (在“法拉利”和“法拉利”之间以及0.735和2%之间有标签,stackoverflow未显示) 每行末尾的换行符也会被读取两次。 为什么会这样?有解决办法吗
0.7352% 当我使用readline读取文件时,读取的行包含每个字符之间的空格,在上述情况下,输出为: f e r a r i f e r a r i(s t d e r o r)
0 . 7.3.5.2% (在“法拉利”和“法拉利”之间以及0.735和2%之间有标签,stackoverflow未显示) 每行末尾的换行符也会被读取两次。 为什么会这样?有解决办法吗 下面是我用来读取文件的代码:
BufferedReader Reader = new BufferedReader(new FileReader("trend.csv"));
String line = null;
while ((line = Reader.readLine()) != null)
System.out.println(line);
BufferedReader Reader = new BufferedReader(new InputStreamReader(new
FileInputStream("trends.csv"), "UTF-8"));
编辑:文件开头还读取了一些奇怪的字符
爱德:找到解决办法了吗
这是编码问题,将第一行更改为:
BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trend.csv"), "UTF-16"));
这是由于字符编码。。。我刚从trends下载了这个文件,并尝试过,它也有同样的问题 如果我使用UTF-16字符集,我就可以解决这个问题
public class TrendReader
{
public static void main(String args[]) throws Exception
{
//BufferedReader Reader = new BufferedReader(new FileReader("trends.csv"));
BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trends.csv"), "UTF-16"));
String line = null;
while ((line = Reader.readLine()) != null)
{
System.out.println(line);
}
}
}
您需要检查文件的编码,并在此基础上在读取文件时指定:
BufferedReader Reader = new BufferedReader(new FileReader("trend.csv"));
String line = null;
while ((line = Reader.readLine()) != null)
System.out.println(line);
BufferedReader Reader = new BufferedReader(new InputStreamReader(new
FileInputStream("trends.csv"), "UTF-8"));
如果您希望该文件为UTF-8格式,请更改该文件的编码,而不是您的代码,这非常简单,您可以使用任何开源CSV读取器(如OpenOffice)读取该文件,并在打开时指定编码:)我在我的计算机上运行了您的确切代码,并正确打印了它。你在什么环境下运行它?这里是Windows7,EclipseHelios。我正在使用Windows7和Eclipse。你从我的问题中复制了文件。使用这个文件:@jonathanwood你是对的。感谢Santhosh Reddy Mandad的答案解决了您的问题,您应该单击他答案附近的复选标记,使其“被接受”。这将极大地帮助寻找答案的人和寻找未回答问题的人,因为这将确认正确答案并从未回答列表中删除问题。谢谢!UTF-8给我带来了麻烦。UTF-16工作得很好。