コンストラクターを介して、ランダムなバイナリ データを含む byte[] を String に変換することは 100% 安全 (例外/エラーなし) ですか?
new String(bytes);
// -- or --
new String(bytes,"UTF-8"); // Or other charset
私の懸念は、無効な UTF-8 バイトが原因で、メッセージが部分的に文字化けするのではなく、例外やその他の障害が発生するかどうかです。
期待どおりに動作するように見えるため、既知の不良バイト値をいくつか試しました。例えば:
byte[] bytes = new byte[] {'a','b','c',(byte)0xfe,(byte)0xfe,(byte)0xff,(byte)0xff,'d','e','f'};
String test = new String(bytes,"UTF-8");
System.out.println(test);
「abc????def」を出力します。
私の懸念は、すべての無効な組み合わせをテストできるとは保証できないため、他の特定の組み合わせが他の予期しない方法で失敗する可能性があるかどうかです。