2016-04-28 4 views
1

scodec.bits.ByteVectorを使用するコードをテストしようとしています。 UTF-8へのエンコードが失敗した場合、これは潜在的なエラーを返すことができるので、私はByteVector.encodeUtf8(str: String): Either[CharacterCodingException, ByteVector]無効なUTF-8バイトを含むScala文字列を作成することはできますか?

を使用しています。特に

、私は、エラー条件を処理する必要があります。もちろん、私は電話を隠して私の特性をモックして強制的にLeft[CharacterEncodingException]を返すことができますが、それはあまりにも面倒です。

私がやりたいことは、無効なutf-8バイトを持つStringを作成してencodeUtf8と呼ぶことです。

私はこのことができないと考えています。私が何をするにしても、Stringクラスは悪いエントリを無意味なものに強制しますが、それでも有効なUTF-8(例: )です。これは正しいですか?

これは私が、このような文字列を作成しようとしてきた方法です:

new String(Array(255.toByte), "utf-8") 

私もいくつかの他のエンコードで文字列を作成しようとした後、UTF-8にエンコードするためにそれを使用しますが、ByteVectorがそれを処理します。

これは可能ですか?

答えて

2

"\uDC00"は、UTF-8でエンコードできない無効な文字列です。これは、ペアになっていないsurrogate code pointが含まれているためです。

+0

ありがとう、ありがとう!これは実際に動作します。 ByteVector.encodeUtf8は、 'Left(java.nio.charset.MalformedInputException:Input length = 1)'を返します。 – encee

関連する問題