Dada una matriz de bytes que es una cadena UTF-8 codificados o datos binarios arbitrarios, lo que se aproxima se puede utilizar en Java para determinar qué es?¿Cómo puedo verificar si una matriz de bytes contiene una cadena Unicode en Java?
La matriz puede ser generada por un código similar a:
byte[] utf8 = "Hello World".getBytes("UTF-8");
Alternativamente, puede haber sido generada por un código similar a:
byte[] messageContent = new byte[256];
for (int i = 0; i < messageContent.length; i++) {
messageContent[i] = (byte) i;
}
El punto clave es que no sabemos lo la matriz contiene pero necesita averiguar para completar la siguiente función:
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.
}
¿Cómo se extendería esto también para cubrir UTF-16 u otros mecanismos de codificación?
Una pregunta similar tiene algunos enlaces útiles de Eduardo Wilde - http://stackoverflow.com/questions/377294/howto-identify-utf- 8-encoded-strings – JonoW