He matriz de bytes, que puso en InputStreamReader y hacer algunas manipulaciones con ella.

Reader reader = new InputStreamReader(new ByteArrayInputStream(byteArr));

JVM defecto cp1252 de codificación, pero el archivo que me traducir a la matriz de bytes que tiene la codificación utf-8. También este archivo tiene diéresis alemanas. Y cuando pongo matriz de bytes en InputStreamReader, java decodificar diéresis para mal símbolos. Por ejemplo ü representar como ü. Estoy intentado poner «UTF-8» y el conjunto de Caracteres.forName(«UTF-8»).newDecoder()); a InputStreamReader constructor, traducir las cadenas de lector a cadena con la nueva codificación a través de la nueva Cadena(oldStr.getBytes(«cp1252»), «UTF-8); pero no ayudó. En el depurador en el lector variable veo StreamDecoder parámetro, que ha «decodificador» con MS1252$Decodificador de valor. Tal vez Es la resolución de mi problema, pero yo no entender, ¿cómo puedo solucionarlo.

2 Comentarios

  1. 2

    Intentar utilizar InputStreamReader(InputStream in, String charsetName) constructor y el conjunto de caracteres por ti mismo.

    Reader reader = new InputStreamReader(new ByteArrayInputStream(byteArr), "UTF-8");
    • No. No funciona 🙁
    • Parece que leer o manipular los datos de una manera equivocada. Por el camino cp1252 soporta el idioma alemán. Puedes mostrar el código que leer el archivo de salida y el resultado?
    • Tal vez pruebe a establecer como predeterminado JVM codificación como este stackoverflow.com/questions/361975/…
    • Tal vez OpenCSV dañar el archivo. Cuando estoy obtener Lector, la puse en OpenCSV método parse. Por ejemplo, archivo con una sola palabra – Zurückziehung, pero en la salida me han Zurückziehung
    • con codificación ANSI no tengo problemas, pero necesito trabajar con UTF-8.
    • Creo que aquí es una solución de su problema stackoverflow.com/questions/1695699/…
    • No es la solución, yo mismo manipulaciones: estoy creando InputStreamReader con «UTF-8» de la codificación y poner esto en CSVReader.
    • Así que tal vez su .txt archivo no está en la codificación UTF-8? No puedo encontrar ninguna otra explicación.
    • Aspecto de su archivo está en cp1252 y trate de leer y manipular en UTF-8
    • Notepad++ decir, que es UTF-8 archivo 🙂
    • Vamos a echar un vistazo en bytes: ö -> C3B6 en UTF8. En windows-1252 C3 ->à B6 ->¶ tan … – >ö Así que usted debe buscar en el código donde todavía puede utilizar cp1252 y dañar los datos. Vaya con el depurador y comprobación de los datos en cada paso y buscar donde pasar
    • Era problema de entorno. Voy a resolver mi problema con el juego de Caracteres. Pero gracias por la ayuda.

  2. 0

    Yo tenía exactamente el mismo error y, finalmente, resolvió el problema mediante la adición de este para el inicio de la JVM opciones :

    -Dfile.encoding=UTF8

Dejar respuesta

Please enter your comment!
Please enter your name here