【问题标题】:Java - Reading a csv file line by line - stuck with weird non-existent characters being read!Java - 逐行读取 csv 文件 - 被读取的奇怪的不存在字符卡住了!
【发布时间】:2010-05-20 21:18:24
【问题描述】:

你好 Java 开发人员。我有一个非常奇怪的问题。

我正在尝试逐行读取 csv 文件。我正处于我刚刚测试线条读数的地步。仅每次我阅读一行时,该行在文本的每个字符之间都包含方形字符。我什至将文件保存为写字板和记事本中的 txt 文件,没有任何变化。

所以我一定是在做傻事……

我有一个 csv 文件,标准 csv 文件,是的,其中有一个带有逗号的文本文件。我尝试阅读一行文字,但文字已被完全修改,无法在文字中找到短语。

有什么建议吗?代码如下。

    //open csv
  File filReadMe = new File(strRoot + "data2.csv");
  BufferedReader brReadMe = new BufferedReader
     (new InputStreamReader(new FileInputStream(filReadMe)));

  String strLine = brReadMe.readLine();
  //for all lines
  while (strLine != null){

   //if line contains "(see also"
   if (strLine.toLowerCase().contains("(see also")){
    //write line from "(see also" to ")"
    int iBegin = strLine.toLowerCase().indexOf("(see also");
    String strTemp = strLine.substring(iBegin);
    int iLittleEnd = strTemp.indexOf(")");
    System.out.println(strLine.substring(iBegin, iBegin + iLittleEnd));
   }

   //update line
   strLine = brReadMe.readLine();
  } //end for

  brReadMe.close();

【问题讨论】:

  • 文件是用什么字符编码写入的?您正在使用没有编码的 InputStreamReader,因此它将使用默认的平台编码,这并不总是您想要的。
  • 这是在windows电脑上制作的,我用的是windows电脑...

标签: java file


【解决方案1】:

我只能认为这是一种不一致的字符编码。在记事本中打开文件,选择另存为,然后在“编码”下拉菜单中选择 UTF-8。然后将“UTF-8”作为第二个参数添加到 InputStreamReader,例如

BufferedReader brReadMe = new BufferedReader
     (new InputStreamReader(new FileInputStream(filReadMe), "UTF-8"));

这应该可以解决任何与编码不一致的问题。

【讨论】:

  • 每个字节之间都发生了坏字节,所以我怀疑是 UTF-16 编码,而不是 UTF-8。
  • 哇! UTF-16 - 就是这样,对不起,我是一个文件格式术语的新手
猜你喜欢
  • 2013-09-05
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 2016-08-21
相关资源
最近更新 更多