Dato un array di byte che è una stringa codificata UTF-8 o dati binari arbitrari, quali approcci possono essere utilizzati in Java per determinare qual è?Come posso verificare se una matrice di byte contiene una stringa Unicode in Java?
La matrice può essere generato dal codice simile a:
byte[] utf8 = "Hello World".getBytes("UTF-8");
alternativa potrebbe essere stato generato dal codice simile a:
byte[] messageContent = new byte[256];
for (int i = 0; i < messageContent.length; i++) {
messageContent[i] = (byte) i;
}
Il punto chiave è che non sappiamo cosa la matrice contiene ma è necessario scoprirlo per riempire la seguente funzione:
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.
}
Come sarebbe esteso anche a UTF-16 o altri meccanismi di codifica?
Una domanda simile ha alcuni link utili da Edward Wilde - http://stackoverflow.com/questions/377294/howto-identify-utf- 8-stringhe codificate – JonoW