Учитывая массив байтов, который является либо кодированной кодировкой 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 или других механизмов кодирования?