lunes, 26 de enero de 2009

Manejo de strings en java provenientes de BD en utf8

Si en una BD tengo string encodeados en utf8, al obtenerlos en un programa java, el java no les hace un decode de utf8, sino que los trata con el encoding default de la jvm (lo cual es indeterminado). Por lo tanto, cualquier tilde en utf8 si se imprime desde el java, se verá como un garabato.

La solución es obtener los bytes que vienen de BD encodeados en latin1 y luego hacerles un decode explicitando que en realidad están en utf8:

titulo = getTituloFromDB();
titulo = new String(titulo.getBytes("latin1"),"UTF-8"));

Así, la variable titulo se podrá ver sin garabatos en una consola utf8.

No hay comentarios: