我尝试将一些法语文本转换为UTF8以便在控制台、文本文件或GUI元素中正确显示,但遇到了一些问题。
原始字符串为
HANDICAP╔ES
应该是
HANDICAPÉES
这里是一个代码片段,展示了我如何在Eclipse/Linux环境下使用jackcess数据库驱动程序读取Acccess MDB文件。
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,但这似乎不起作用,所以我必须进行双重转换。此外,请注意,在使用jackcess驱动程序时似乎没有指定编码类型的方法。
谢谢, Cam
É
解释为CP850时,所得到的结果是╔
。 - Joey