BeanIo无法读取特殊字符

时间:2017-04-28 17:13:42

标签: java unix encoding character-encoding bean-io

我有一个带ANSI的.txt文件(windows-1252)编码我能够在Windows上读取它而不是在unix上读取它。

这是xml映射文件:

   
{
     "brace_style": "expand"
}

Java Side:

  <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>

结果: line:法国

行:S ?? o Paulo应该是(圣保罗)windows OK但是unix是KO

行:美国

行:中国

有什么想法吗?

仅供参考:我已经尝试将Charset设置为UTF-8 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());
    }

1 个答案:

答案 0 :(得分:0)

有点晚了,但是...如果您又有一个ANSI文件ISO-8859-1,则必须将InputStreamReader字符集设置为ISO-8859-1,而不是UTF-8。

Reader reader = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("clearings.txt"), StandardCharsets.ISO_8859_1);