UTF-8 byte[] a cadena

Resuelto skeryl asked hace 12 años • 11 respuestas

Supongamos que acabo de usar a BufferedInputStreampara 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;    
}
skeryl avatar Dec 15 '11 04:12 skeryl
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);
Jason Nichols avatar Dec 14 '2011 21:12 Jason Nichols

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");
Kashif Khan avatar Dec 14 '2011 21:12 Kashif Khan