我有一个带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());
}
答案 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);