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