Codificador InputStreamReader

Mi problema es bastante simple:

new InputStreamReader(is, "UTF-8");

Hace que β y ・ parezcan signos de interrogación.

¿Qué codificador debo usar para ver esos caracteres correctamente?

preguntado el 04 de julio de 12 a las 07:07

3 Respuestas

Debe usar la codificación de sus datos de entrada democracia in. No podemos decirle que para usted, aunque si proporciona el bytes que están destinados a representar esos caracteres, podemos sugerir algunas posibilidades.

Si bien a veces puede aplicar algunas heurísticas para adivinar una codificación, democracia debe saberlo según el origen de los datos. En este caso, no nos ha dado ninguna pista sobre cuál es su entrada; si proviene de una respuesta web, debe consultar el Content-Type encabezado de la respuesta. Si es de un archivo, realmente depende de lo que produjo ese archivo.

EDITAR: Ahora sabemos que es is una respuesta web, por supuesto, no es necesario que se sumerja en los encabezados. Puede usar una biblioteca de cliente HTTP que descargará los datos por usted y los decodificará como una cadena.

Respondido 04 Jul 12, 07:07

Bueno, los datos provienen de una página wiki de Internet, por lo que realmente no sé qué codificación están usando. - charlie-blake

@ santirivera92: según mi respuesta, mire el encabezado de tipo de contenido. O use una biblioteca de cliente HTTP que haga esto por usted... - jon skeet

@santirivera92: si estás usando URLConnection entonces puedes obtener Content-Type usando URLConnection.getHeaderFieldKey("Content-type") y URLConnection.getHeaderField("Content-type") - ρяσѕρєя K

Tomado de La documentación del juego de caracteres de Java 5.0.

Charset     Description
US-ASCII    Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set
ISO-8859-1  ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1
UTF-8       Eight-bit UCS Transformation Format
UTF-16BE    Sixteen-bit UCS Transformation Format, big-endian byte order
UTF-16LE    Sixteen-bit UCS Transformation Format, little-endian byte order
UTF-16      Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark

Así que pruebe todas estas cadenas en su segundo parámetro hasta que obtenga la codificación deseada.

Respondido 04 Jul 12, 07:07

Al final fue ISO-8859-15. ¡Muchas gracias chicos! - charlie-blake

Solo agregando a lo que dijeron los demás, el resultado final será UTF-8 mientras esté en Java, y eso podrá manejar cualquier carácter que tenga. Sin embargo, la pregunta aquí es ¿cómo leer y eso depende de en qué codificación esté escrito el archivo que, aparentemente, no es UTF-8.

Respondido 04 Jul 12, 07:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.