У меня возникают некоторые проблемы с получением некоторого французского текста для преобразования в UTF8, чтобы он отображался правильно, либо в консоли, либо в текстовом файле, либо в элементе GUI.
Исходная строка
HANDICAP╔ES
который должен быть
HANDICAPÉES
Вот фрагмент кода, который показывает, как я использую jackcess Драйвер базы данных для чтения в файле Access Acccess в Eclipse/Linux.
Database database = Database.open(new File(filepath));
Table table = database.getTable(tableName, true);
Iterator rowIter = table.iterator();
while (rowIter.hasNext()) {
Map<String, Object> row = this.rowIter.next();
// convert fields to UTF
Map<String, Object> rowUTF = new HashMap<String, Object>();
try {
for (String key : row.keySet()) {
Object o = row.get(key);
if (o != null) {
String valueCP850 = o.toString();
// String nameUTF8 = new String(valueCP850.getBytes("CP850"), "UTF8"); // does not work!
String valueISO = new String(valueCP850.getBytes("CP850"), "ISO-8859-1");
String valueUTF8 = new String(valueISO.getBytes(), "UTF-8"); // works!
rowUTF.put(key, valueUTF8);
}
}
} catch (UnsupportedEncodingException e) {
System.err.println("Encoding exception: " + e);
}
}
В коде вы увидите, где я хочу конвертировать непосредственно в UTF8, который, похоже, не работает, поэтому мне нужно сделать двойное преобразование. Также обратите внимание, что, как представляется, не существует способа указать тип кодировки при использовании драйвера входов.
Спасибо, Cam