Source.fromResource()ローカルに動作しますが、サーバー上のjava.nio.charset.MalformedInputExceptionをスローします

Upvoteをクリックします。

私は、リソースを読み取るために、このコードを使用しています:

  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、おそらくデフォルトの文字セットがサーバ上で使用されていることは、私がローカルに持っているものと異なっています。

それは私がローカルに持っている(とどのように私は私がローカルに持っているものをチェックすることができます)どんな一致するように私の質問は、どのように私は、サーバー上の文字セットを変更することができますか?

ありがとうございました。

アンドレイTyukin:

私はその暗黙の前提としたいCodecあなたが見ることができる値

println(implicitly[scala.io.Codec])

サーバー上の別のです。私はそれを正しく理解していれば、それはに評価する必要がありますscala.io.Codec.fallbackSystemCodecただ、適切に合格Codec(明示的fromResourceメソッドは暗黙のかかるCodec二番目のパラメータリストで)、例えば:

val source = Source.fromResource(pathWithoutSlash)(Codec.UTF8)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=187476&siteId=1