我使用Scala的2.8.0和嘗試讀取管道分隔文件中像下面剪斷代碼:如何解決Scala 2.8.0中的java.nio.charset.UnmappableCharacterException?
object Main {
def main(args: Array[String]) :Unit = {
if (args.length > 0) {
val lines = scala.io.Source.fromPath("QUICK!LRU-2009-11-15.psv")
for (line <-lines)
print(line)
}
}
}
這裏的錯誤:在線程「主要」的java.nio.charset中
例外。 UnmappableCharacterException:輸入長度= 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:261) 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)(BufferedReader.java:136) at java.io.BufferedReader.read(BufferedReader.java:157) at scala.io.BufferedSource $$ anonfun $ 1 $$ anonfun $ apply $ 1。應用(BufferedSource.scala:29) at scala.io.BufferedSource $$ anonfun $ 1 $$ anonfun $ apply $ 1.apply(BufferedSource.scala:29) at scala.io.Codec.wrap(Codec.scala:65)在scala.io.BufferedSource $ anonfun $ 1.apply(BufferedSource.scala:29) $ Inerator(Iterator.scala:149) at scala.collection.Iterator $$ anon $ 2.next(Iterator.scala:745) at scala.collection.Iterator $$ anon $ 2.head(Iterator.scala:732) at在scala.collection.Iterator $$ anon $ 20.hasNext(Iterator.scala:320) at scala.io.Source.hasNext(Source。 Scala:209) at scala.collection.Iterator $ class.foreach(Iterator.scala:534) at scala.io.Source.foreach(Source.scala:143) ... at infillreports.Main $ .main (Main.scala:8)infillreports.Main.main(Main.scala) Java結果 :1
你簡直太棒了!非常感謝你。 – 2009-11-19 16:06:49
我希望您能花時間瞭解爲什麼在這裏添加「UTF-8」是必要的,以及它如何改變從輸入流中讀取字符的行爲。如果您沒有得到它,請在此處詳細說明您的問題,或者詢問有關字節,字符和字符編碼的新問題。 – seh 2009-11-25 01:55:21
在scala 2.12.3中,你應該寫 Source.fromFile(fileName)(Codec(「utf-8」)) – 2017-11-18 10:25:28