Foro sobre Java SE > Problema acentos java y mysql
Buenas,
Puedes mostrarnos como creas la conexion con MySQL?
Un saludo,
Buenas, muchas gracias por el interés
public Oferta getOferta(int idOferta) throws ClassNotFoundException, SQLException{
try
{
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e)
{
e.printStackTrace();
}
Connection c=DriverManager.getConnection(server,user,password);
Statement st=c.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=st.executeQuery("SELECT idoferta,nombre,contenido,rutaimagen FROM OFERTA WHERE idoferta="+idOferta);
rs.next();
Oferta oferta=new Oferta(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4));
c.close();
return oferta;
}
Buenas,
En el DriverManager.getConnection(server,user,password);
entiendo que en la variable server tienes algo como jdbc:mysql:///midb
no?
Prueba a poner esto: jdbc:mysql:///midb?useUnicode=true&characterEncoding=utf-8
Un saludo,
Muchas gracias, pero no sigue sin sacar bien los acentos
me sigue sin sacar bien* que me he equivocado al escribir jejeje
Ummm, es raro... Como haces para representar los caracteres/texto?
Es decir, lo haces con un System.out, o depurando, o mostrandolos en una JSP....
System.out.println
Ahhh ok. El problema esta ahi entonces! El encoding esta bien, pero es la salida standar Java la que no soporta la codificacion.
A que si depuras la variables en eclipse si que se ven bien los acentos?
Si tu programa tienes que escribir en consola deberias crearte un printwriter especifico :
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
out.println(“some-utf8-string”);
Lo mejor es que te hagas una funcioncilla que encapsule esto.
Si trabajas con la consola de eclipse puede que necesites anadir esto -Dfile.encoding=UTF-8 en el eclipse.ini para que funcione.
Algunas referencias:
http://poeticcode.wordpress.com/2009/01/19/systemout-and-utf8/
http://paranoid-engineering.blogspot.de/2008/05/getting-unicode-output-in-eclipse.html
Un saludo
Buenas,
Si hago un debug, en la variable oferta me salen mal los acentos. Así que no puede ser relativo a la consola :S
Me estoy volviendo loco con esta tontería jeje
Buenas,
Pues mucho sentido no tiene. Me acabo de hacer ahora mismo un ejemplo on the fly y me funciona perfectamente con acentos y todo:
public class Test {
private static String getStringFromMySQL() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql:///xxxx?useUnicode=true&characterEncoding=utf-8", "root", "root");
Statement st = c.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.executeQuery("select xxxxxx from xxxxxx where xxxxxx=1");
rs.first();
String dato = rs.getString(1);
return dato;
}
public static void main(String[] args) throws ClassNotFoundException {
String data = null;
try {
data = getStringFromMySQL();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(data);
}
}
Tienes esto en tu my.ini verdad?:
default-character-set=utf8
character-set-server = utf8
collation-server = utf8_general_ci
Si eso tampoco es, te paso un link de configuration utf-8 para mysql muy completo:
http://cameronyule.com/2008/07/configuring-mysql-to-use-utf-8/
Suerte
Buenos días,
Quisiera haceros una consultilla a ver si alguien me puede ayudar...
El tema es que en MySQL tengo unos datos con acentos, pero cuando los recojo en java (con Eclipse), me hace la siguiente traducción:
á ->
é -> ‚
í -> ¡
ó -> ¢
ú -> £
....
Datos de interés, en Eclipse he configurado para que me coja por defecto todas las página como UTF-8
En MySQL he seteado los siguientes parámetros:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem BINARY
character_set_results utf8
character_set_server utf8
character_set_system utf8
Muchas gracias
;)