BeanIo не может читать специальные символы

У меня есть файл.txt с кодировкой ANSI (windows-1252). Я могу читать его в Windows, но не в Unix.

вот файл сопоставления 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>

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());
    }

Результат: линия: Франция

строка: S??o Paulo должно быть (São Paulo), окна в порядке, но Unix - это KO

линия: США

линия: Китай

Любая идея?

К вашему сведению: я уже пытался установить Charset в сторону UTF-8 Java.

new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("clearings.txt"), Charset.forName("UTF-8"));

1 ответ

Это немного поздно, но... если у вас есть файл ANSI или ISO-8859-1, вы должны установить InputStreamReader кодировка как ISO-8859-1, а не UTF-8.

Reader reader = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("clearings.txt"), StandardCharsets.ISO_8859_1);
Другие вопросы по тегам