Tengo un archivo .txt con codificación ANSI (Windows-1252). Puedo leerlo en Windows pero no en Unix.
aquí está el archivo de mapeo xml:
<beanio> <stream name="empData" format="csv"> <parser> <property name="delimiter" value=";"/> <property name="alwaysQuote" value="false"/> <!--<property name="quote" value='' />--> </parser> <record name="emp" class="com.MyClass" > <field name="name" /> <field name="job" /> <field name="adress"/> </record> </stream> </beanio>
Lado Java:
StreamFactory factory = StreamFactory.newInstance(); InputStream in = this.getClass().getClassLoader() .getResourceAsStream("mapping.xml"); Reader reader = new InputStreamReader(this.getClass().getClassLoader() .getResourceAsStream("countries.txt")); factory.load(in); BeanReader beanReader = factory.createReader("empData", reader); Gson gson = new Gson(); /*Object bean =new Object();*/ Object record = null; while ((record = beanReader.read()) != null) { System.out.println(beanReader.getRecordName() + ": " +((MyClass)record).getCountry()); }Resultado : línea : Francia
línea: São Paulo debería ser (São Paulo) Windows está bien, pero Unix está KO
línea : EE.UU.
linea : China
Alguna idea ?
FYI: ya intenté configurar Charset en el lado Java UTF-8.
new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("clearings.txt"), Charset.forName("UTF-8"));Es un poco tarde pero... si tiene un archivo ANSI, también conocido como ISO-8859-1 , debe configurar el juego de caracteres InputStreamReader como ISO-8859-1, no UTF-8.
Reader reader = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("clearings.txt"), StandardCharsets.ISO_8859_1);