Java BASE64 utf8字符串解码

ter*_*207 13 java base64 utf-8 character-encoding

我正在使用org.apache.commons.codec.binary.Base64做解码字符串,这是utf8.有时我会得到base64编码的字符串,例如解码后的字符串^@k??????@@.如何检查base64是否正确或解码utf8字符串是否有效utf8字符串?

澄清.我正在使用

public static String base64Decode(String str) {
    try {
        return new String(base64Decode(str.getBytes(Constants.UTF_8)), Constants.UTF_8);
    } catch (UnsupportedEncodingException e) {
         ...
    }
}

public static byte[] base64Decode(byte[] byteArray) {
    return Base64.decodeBase64(byteArray);
}
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 27

你应该转换过程中指定的字符集Stringbyte[],反之亦然.

byte[] bytes = string.getBytes("UTF-8");
// feed bytes to Base64
Run Code Online (Sandbox Code Playgroud)

// get bytes from Base64
String string = new String(bytes, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

否则,将使用平台默认编码,其本身不一定是UTF-8.