如何检查字节数组是否是有效的 UTF-8 字符串

mar*_*lby 4 java arrays byte utf

我正在javax.crypto.Cipher使用 和 作为我得到的输出来解码消息byte[]。检查我的密钥是否正确并且是有效字符串的最快方法是什么?byte[]

Max*_*x08 8

尝试这个 :-

public boolean checkUTF8(byte[] barr){

        CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
        ByteBuffer buf = ByteBuffer.wrap(barr);

        try {
            decoder.decode(buf);

        }
        catch(CharacterCodingException e){
            return false;
        }

        return true;
    }
Run Code Online (Sandbox Code Playgroud)