Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/08/2010, 15:12
Nemesis_Aslan
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 14 años, 3 meses
Puntos: 0
Problemas con codificacion UTF-8

Hola tengo un problema un poco molesto, estoy haciendo todo mi proyecto en UTF 8 para evitar broncas con los caracters especiales, por el momento el despliegue de paginas esta bien pero cuando envio datos a la base de datos los caracteres con acentos se registran con los caracteres raros en la BD.

Todos mis archivos ya estan en UTF-8 sin BOM y la BD esta codificacada en UTF-8 tambien ¿cual podra ser el problema? Estoy pasando datos a la BD mediante este JSP:

FORMULARIO


Código:
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*"%>
<%@ include file="../dbop/conexion.jsp" %>
<%
	HttpSession sesion1 = request.getSession(true);
	String iden = (String) sesion1.getAttribute("ID");
	String usuario = (String) sesion1.getAttribute("USER");
        //Date acceso=new Date(sesion.getLastAccessedTime());
	if((iden == null) && (usuario == null)){
		response.sendRedirect("error.jsp");
	}

%>
<HTML>
 <HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<LINK rel="stylesheet" href="../bonito.css" type="text/css" media="screen"> 
<TITLE>Registro de miembros</TITLE>
<script src="../script.js">
</script>
 </HEAD>
 <BODY>
 	<CENTER>
  		<H1>REGISTRO</H1>
	</CENTER>
  	<div><H2>Datos personales<H2></div>
 <P class="ins">Contesta completamente los formularios</P>
  <FORM action="../dbop/reg1.jsp" enctype="text/plain">
   <CENTER> <TABLE class="formtab">
     <TR>
      <TD class="subt">Nombre Completo:</TD> 
      <TD><INPUT name="nombre" type="text"></TD>
     </TR> 
     <TR>
      <TD class="subt">Fecha de nacimiento :</TD> 
      <TD><INPUT name="ano" type="text" maxlength="4" size="4"><INPUT name="mes" type="text" maxlength="2" size="2"><INPUT name="dia" type="text" maxlength="2" size="2"></TD>
     </TR>
     <TR>
	<td class="ind" colspan="2">El formato de la fecha debe de ser ano-mes-dia.<br>Se deben respetar numeros de un solo digito.</td>
    </TR>	
    <TR>
      <TD class="subt">Telefono (Casa/Oficina):</TD> 
      <TD><INPUT name="tel" type="text"></TD>
    </TR>
    <TR>
	<td class="ind" colspan="2">Introduce solo numeros</td>
    </TR>
	<TR>
      <TD class="subt">Celular:</TD> 
      <TD><INPUT name="cel" type="text"></TD>
    </TR>  
     <TR>
	<td class="ind" colspan="2">Introduce solo numeros</td>
    </TR>	
    <TR>
      <TD class="subt">E-mail:</TD> 
      <TD><INPUT name="email" type="text"></TD>
    </TR>
    <TR>
      <TD class="subt">Estudios:</TD> 
      <TD><TEXTAREA name="estu" rows="4" cols="25"></TEXTAREA></TD>
    </TR>
      <TR>
	<td class="ind" colspan="2">Separalos con ","</td>
    </TR>
     <TR>
     <TD colspan="2"><input type="button" onClick="ValidarFormulario(this.form)" value="Registrar"></TD> 
    </TR>
   </TABLE></CENTER>
 </FORM>
 </BODY>
</HTML>
JSP QUE GUARDA LOS DATOS


Código:
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*"%>
<%@ include file="conexion.jsp" %>
<%
	HttpSession sesion1 = request.getSession(true);
	String iden = (String) sesion1.getAttribute("ID");
	String usuario = (String) sesion1.getAttribute("USER");
        //Date acceso=new Date(sesion.getLastAccessedTime());
	if((iden == null) && (usuario == null)){
		response.sendRedirect("error.jsp");
	}

Class.forName("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection(url, login, password);
statement = conn.createStatement();


String name = request.getParameter("nombre");
String a = request.getParameter("ano");
String d = request.getParameter("dia");
String m = request.getParameter("mes");
String tel = request.getParameter("tel");
String cel = request.getParameter("cel");
String em = request.getParameter("email");
String est = request.getParameter("estu"); 

String fecha = a +"-"+ m +"-"+ d; 
 
int cons;

String qry,men,idus,sn;


sn="SET NAMES 'utf8'";
snames = conn.createStatement();
snames.executeUpdate(sn);

qry  = "INSERT INTO miembros VALUES ";
qry += "(null," + "'" +name+ "','" +fecha+ "','" +tel+ "','" +cel+ "','"+em+"','" +est+ "')"; 

cons = statement.executeUpdate(qry);

Statement stmt = null;
ResultSet rs1 = null;
stmt = conn.createStatement();

          if(cons > 0){
 
 	     men = "SELECT id FROM miembros WHERE nombre='"+name+"'";
             rs1 = stmt.executeQuery(men);
             if(rs1.next()){
                 idus = rs1.getString("id");
                 sesion1.setAttribute("IDUS",idus);	                       
             	 response.sendRedirect("/prueba/registro/forms/proyr.jsp");}
             }
            
          else{
             men = "No se ha podido agregar el registro";


out.println("<head>");
out.println("<LINK rel='stylesheet' href='../bonito.css' type='text/css' media='screen'>");
out.println("<title> Registro</title></head>");
out.println( "<div align='center'>");
out.println(men);
out.println( "<br><br>");       
out.println("<a href='../forms/entrar.html'>");
out.println("Regresar");
out.println( "</a>");
out.println("</div>");
}

statement.close();


%>