Source.fromResource()在本地工作,但在服务器上引发java.nio.charset.MalformedInputException
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Source.fromResource()在本地工作,但在服务器上引发java.nio.charset.MalformedInputException,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1404字,纯文字阅读大概需要3分钟。
内容图文
我正在使用以下代码读取资源:
val source = Source.fromResource(pathWithoutSlash)
val lines:Seq[String] = (for (l <- source.getLines() if ! l.trim.isEmpty) yield l.trim).toList
当我在本地运行该代码时,它工作正常-但在服务器上,它失败并显示:
Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:274)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
at scala.io.BufferedSource$BufferedLineIterator.hasNext(BufferedSource.scala:70)
我猜是因为文件确实包含一些重音字符,例如:éclair’s,并且服务器上使用的默认字符集可能与我本地使用的字符集不同.
我的问题是,如何更改服务器上的字符集,使其与我本地拥有的字符集匹配(以及如何检查本地拥有的字符集)?
谢谢.
解决方法:
我假设您可以看到的隐式Codec值
println(implicitly[scala.io.Codec])
在您的服务器上是不同的.如果我正确理解,它应该评估为scala.io.Codec.fallbackSystemCodec.只需显式地传递适当的编解码器(fromResource方法在第二个参数列表中采用隐式编解码器),例如:
val source = Source.fromResource(pathWithoutSlash)(Codec.UTF8)
内容总结
以上是互联网集市为您收集整理的Source.fromResource()在本地工作,但在服务器上引发java.nio.charset.MalformedInputException全部内容,希望文章能够帮你解决Source.fromResource()在本地工作,但在服务器上引发java.nio.charset.MalformedInputException所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。