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)