Tengo algunos problemas para convertir un poco de texto francés a UTF8 para que se pueda mostrar correctamente, ya sea en una consola, archivo de texto o en un elemento GUI.Codificación de caracteres UTF-8 en Java
La cadena original es
HANDICAP╔ES
que se supone que es
handicapées
Aquí es un fragmento de código que muestra cómo estoy usando el controlador de base de datos para leer jackcess en el archivo Acccess MDB en un entorno 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);
}
}
En el código verá donde quiero convertir directamente a UTF8, lo que no parece funcionar, por lo que tengo que hacer un doble conversión. También tenga en cuenta que no parece haber una manera de especificar el tipo de codificación cuando se utiliza el controlador de jackcess.
Gracias, Cam
Eso no es UTF-8, sino más bien CP850. – Joey
¿Estás diciendo que la cadena original es CP850? Me doy cuenta de que la cadena original no era UTF-8, aunque no estaba seguro de qué codificación exacta. Es UTF-8 que estoy tratando de convertir para que se muestre correctamente. Y entiendo que el personaje É es compatible con UTF-8. Gracias. – cambo
'╔' es lo que obtiene cuando toma' É' en CP1252 y lo interpreta como CP850. – Joey