如何检查字节数组是否包含 Java 中的 Unicode 字符串?
给定一个字节数组,该数组要么是 UTF-8 编码的字符串,要么是任意二进制数据,那么在 Java 中可以使用哪些方法来确定它是哪种?
数组可以由类似于以下内容的代码生成:
byte[] utf8 = "Hello World".getBytes("UTF-8");
或者,它可能是由类似于以下内容的代码生成的:
byte[] messageContent = new byte[256];
for (int i = 0; i < messageContent.length; i++) {
messageContent[i] = (byte) i;
}
关键的一点是,我们不知道数组包含什么,但需要找出来才能填写以下函数:
public final String getString(final byte[] dataToProcess) {
// Determine whether dataToProcess contains arbitrary data or a UTF-8 encoded string
// If dataToProcess contains arbitrary data then we will BASE64 encode it and return.
// If dataToProcess contains an encoded string then we will decode it and return.
}
如何扩展以涵盖 UTF-16 或其他编码机制?