小编Jir*_*iya的帖子

Java 8改变了UTF-8解码

我们最近将我们的应用程序从JDK 7迁移到了JDK 8.在更改之后,我们遇到了以下代码片段的问题.

String output = new String(byteArray, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

字节数组可能包含无效的UTF-8字节序列.在UTF-8解码时,相同的字节数组在Java 7和Java 8上产生两个不同的字符串.

根据这篇SO帖子答案,Java 8"修复"了Java 7中的一个错误,并用一个替换字符串替换了无效的UTF-8字节序列,这符合UTF-8规范.

但我们希望坚持使用Java 7的解码字符串版本.

我们尝试在Java 8上使用带有CodingErrorAction的CharsetDecoder作为REPLACE,REPORT和IGNORE.但是,我们无法生成与Java 7相同的字符串.

我们能用合理复杂的技术做到这一点吗?

java regression utf-8 java-8

8
推荐指数
1
解决办法
4162
查看次数

标签 统计

java ×1

java-8 ×1

regression ×1

utf-8 ×1