是否可以创建包含无效UTF-8字节的Scala字符串?

时间:2016-04-28 23:18:16

标签: scala encoding utf-8 character-encoding

我尝试测试一些使用scodec.bits.ByteVector的代码。

特别是我使用ByteVector.encodeUtf8(str: String): Either[CharacterCodingException, ByteVector]

如果编码为UTF-8失败,这可能会返回潜在的错误,我必须处理错误情况。当然,我可以隐藏电话并模仿我的特质,这样我就强行归还Left[CharacterEncodingException],但这太麻烦了。

我喜欢做的是创建一个String,其中包含一些无效的utf-8字节,并使用它调用encodeUtf8

我猜这是不可能的。无论我做什么,String类都会将任何不良条目强制转换为无意义但仍然有效的UTF-8(例如�)。这是对的吗?

这就是我尝试创建这样一个字符串的方式:

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

我还尝试在其他一些编码中创建一个字符串,然后用它来编码为UTF-8,但是ByteVector会处理它。

这可能吗?

1 个答案:

答案 0 :(得分:2)

"\uDC00"是无效的字符串,无法以UTF-8编码。这是因为它包含未配对的surrogate code point