UTF-8 byte[] a cadena
Supongamos que acabo de usar a BufferedInputStream
para leer los bytes de un archivo de texto codificado en UTF-8 en una matriz de bytes. Sé que puedo usar la siguiente rutina para convertir los bytes en una cadena, pero ¿hay una forma más eficiente/inteligente de hacerlo que simplemente iterar a través de los bytes y convertir cada uno?
public String openFileToString(byte[] _bytes)
{
String file_string = "";
for(int i = 0; i < _bytes.length; i++)
{
file_string += (char)_bytes[i];
}
return file_string;
}
Aceptado
Mira el constructor de String.
String str = new String(bytes, StandardCharsets.UTF_8);
Y si te sientes perezoso, puedes usar la biblioteca Apache Commons IO para convertir el InputStream en un String directamente:
String str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
La clase Java String tiene un constructor incorporado para convertir una matriz de bytes en una cadena.
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
String value = new String(byteArray, "UTF-8");