在java中读取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未显示) 每行末尾的换行符也会被读取两次。 为什么会这样?有解决办法吗

我正在阅读从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未显示)

每行末尾的换行符也会被读取两次。 为什么会这样?有解决办法吗

下面是我用来读取文件的代码:

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工作得很好。