Tengo un escenario con dos bases de datos MySQL (en UTF-8), un código Java (un servicio de temporizador) que sincroniza ambas bases de datos (leyendo primero de ellos y escribir/actualizar a la segunda) y una aplicación web que permite modificar los datos cargados en la segunda base de datos.Problemas para leer/escribir datos UTF-8 en MySQL desde Java usando el conector JDBC 5.1
Todo el acceso de base de datos se realiza mediante iBatis (pero puedo detectar que tengo el mismo problema utilizando JDBC, PreparedStatement
s y ResultSet
s)
Cuando mi código java lee datos de primera base de datos, obtengo personajes como 'ó'
cuando realmente debe ser 'ó'
. Estos datos se escriben sin modificaciones en la segunda base de datos.
Más tarde, cuando veo los datos cargados en mi aplicación web, veo el carácter extraño a pesar del <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
.
Si decodificar los datos usando ...
new String(data.getBytes("UTF-8"));
... Me visualizar correctamente los caracteres (o). Pero no puedo usar esta solución como una regla general porque cuando modifico datos usando un formulario de aplicación web, los datos no se actualizan en UTF-8 en mi segunda base de datos (a pesar de que la base de datos es UTF-8 y mi cadena de conexión usa characterEncoding, characterSetResults y useUnicode parameters).
Desde mi código Java que obtienen los siguientes valores de base de datos:
character_set_client-->utf8
character_set_connection-->utf8
character_set_database-->utf8
character_set_filesystem-->binary
character_set_results-->utf8
character_set_server-->latin1
character_set_system-->utf8
character_sets_dir-->/usr/local/mysql51/share/mysql/charsets/
el ajuste character_set_server no puede ser cambiado y no sé lo que estoy haciendo mal !!
¿Cómo puedo leer datos UTF-8 de MySQL usando el conector JDBC (mysql-connector-java-5.1.5-bin.jar
)?
¿El problema está en leer datos de la primera base de datos o escribir en la segunda base de datos?
debe haber; después de UTF-8. –
@ScottChu Lo siento, no entiendo tu comentario. – erickson