我有一个132 kb的文件(你不能说它很大),我试图在Scala REPL中读取它,但是我无法读取超过2048个字符,因为它会给我一个java.nio.charset.MalformedInputException
异常。
以下是我采取的步骤:
val it = scala.io.Source.fromFile("docs/categorizer/usig_calles.json") // this is ok
it.take(2048).mkString // this is ok too
it.take(1).mkString // BANG!
java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(CoderResult.java:277)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:338)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
你有任何想法出了什么问题吗?
--
显然问题在于文件不是UTF编码
我将其保存为UTF,一切都正常,我只需对迭代器发出mkString指令,就可以检索文件的全部内容
奇怪的是,错误只在传递前2048个字符时出现...
2 ^ 11 + 1
个字符处遇到第一个非法字节序列只是一个巧合。 - Travis Brown