【问题标题】:Why does Scala crash when reading my CSV?为什么 Scala 在读取我的 CSV 时会崩溃?
【发布时间】:2011-08-20 07:02:55
【问题描述】:

文件在这里

http://dl.dropbox.com/u/12337149/history.csv

我尝试如下读取数据

  for (line <- Source.fromFile(new File(file)).getLines) {
   println(line)
  }

我收到以下错误

Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1
    at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:319)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.BufferedReader.fill(BufferedReader.java:136)
    at java.io.BufferedReader.readLine(BufferedReader.java:299)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
    at scala.io.BufferedSource$BufferedLineIterator.<init>(BufferedSource.scala:32)
    at scala.io.BufferedSource.getLines(BufferedSource.scala:43)
    at com.alluvia.reports.RunIGConverter$$anonfun$main$1.apply(RunIGConverter.scala:17)
    at com.alluvia.reports.RunIGConverter$$anonfun$main$1.apply(RunIGConverter.scala:15)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
    at scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38)
    at com.alluvia.reports.RunIGConverter$.main(RunIGConverter.scala:15)
    at com.alluvia.reports.RunIGConverter.main(RunIGConverter.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

文件在 excel 中打开得很好。我认为这是某种类型的编码问题,但我不知道解决方法

【问题讨论】:

    标签: java scala csv filereader


    【解决方案1】:

    我会尝试 ISO8859_1 编码,如果不起作用,我会尝试 Cp1252,如下所示:

    Source.fromFile(new File(file), "ISO-8859-1").getLines()
    

    您可以查看 Sun Java 支持哪些编码 here。我忘记了您是否应该使用 nio 或 io 版本。 (从我的回答中可以看出,两者都使用了。)

    【讨论】:

    • 我遇到了同样的问题。打开文件并用 UTF8 保存就可以了。
    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多