Problemas con insercion de datos...

thepolice0101
09 de Julio del 2004
Hola como estan...queria saber si me pueden ayudar...este es mi problema cuando quiero insertar un nuevo registro que contengan vocales con acento o la "ñ" en mysql a traves de codigo java, al momento de insertar inserta basura reemplazando a dichos caracteres...tambien sucede lo mismo cuando inserto a traves de algunas interfaces como Mysql COntrol center o navicat por ejemplo...yo pienso que puede ser por el controlador que usan estas interfaces, y en el caso de la programacion el control que uso (org.gjt.mysql...Driver), quisiera si alguien me puede aclarar porque sucede eso le agradezco de antemano.

eldrum
09 de Julio del 2004
El principal problema es que el lenguaje SQL (como la mayoria de los elementos de la informatica de antes del 2000) no traga con caracteres no yanquis (la ñ, la ç, las tildes....). Esto significa que no forma parte de su alfabeto conocido.

Que hace con las ñ, pues normalmente se transforman en un caracter hexadecimal (esa basura que ves para cubrirse la espaldas) sin embargo el problema surge cuando usas un codigo A para insertar y un codigo B para leer (por ejemplo dos clientes de BD diferentes) ya que igual no interpretan igual la basura (un buen cliente deberia ser capaz de interpretar su basura correctamente).

Yo tube ese problema (y tambien con las ' y ") y lo soluciones usando una URL encode - decode para almacenar los datos como una URL (que no tienen ninguno de esos carácteres). No es una solución elegante ni la más rápida, pero me funciono perfectamente (hay que tener cuidado de usar URLEncode para cada insercción y URLDecode para cada extracción)

thepolice0101
09 de Julio del 2004
Hola que tal, lei la respuesta...aun no he encontrado informacion sobre lo q es y como funciona exactamente una URL_Encode,
..bueno estoy buscando informacion
sobre ello pero mientras tanto
he echo algo parecido, he utilizado una de las funciones de mysql para hacer lo mismo
ella es encode para codificar y decode para decodificar, lo he probado en una interfaz como
Mysql control center y funciona, quisiera hacerlo a traves de codigo java lo que pasa no se
como hacerlo he copiado la consulta q habia probado en mysqlcc y no funciona, quizas no funcione
encode aqui o no lo se no es la manera de hacerlo, este es el codigo para la funcion insertar:

PreparedStatement updateTesis;
updateTesis=con.prepareStatement("INSERT INTO libro " +
"encode(autor,'password'), ciudad, codigo, descritores, edicion,editorial, " +
"fec_pub, form_adq, form_obr, idioma, inf_desc, mfn, " +
"paginas,pais,resumen,titulo) "+
"VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
updateTesis.setString(1, autor);
updateTesis.setString(2, ciudad);
.
.
.
updateTesis.setString(16, titulo);
updateTesis.execute();

'password' es el key con el cual se codifica ,quisiera saber si java tiene alguna clase
para codificar(que haga lo mismo q encode), cosa que lo podria codificar en java y lo
inserto ya codificado. Agradezco de antemano tu colaboracion.