Foros del Web » Programando para Internet » PHP »

Tildes y ñ en bd bien, luego mal

Estas en el tema de Tildes y ñ en bd bien, luego mal en el foro de PHP en Foros del Web. Tengo un problema, las tildes y las ñ en la bd están bien, pero luego cuando se muestra salen caracteres raros. Y lo más raro ...
  #1 (permalink)  
Antiguo 20/06/2007, 12:58
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Tildes y ñ en bd bien, luego mal

Tengo un problema, las tildes y las ñ en la bd están bien, pero luego cuando se muestra salen caracteres raros. Y lo más raro de todo es que solo me ocurre cuando muestro información de la bd...
Tengo la codificación en la bd utf-8-general-ci y la de la página:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
Y lo muestro:
utf8_encode(htmlentities($array['titulo']))
Y siguen saliendo caracteres raros...
  #2 (permalink)  
Antiguo 20/06/2007, 13:15
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Tildes y ñ en bd bien, luego mal

Hola,, yo te recomiendo, que siempre que vayas a introducir algún dato en tu base de datos hagas uso de las entidades HTML, en lugar de 'ñ' usar '&ntilde;' de esta forma, siempre te va a mostrar la 'ñ' y no tendrás problema si tu base de datos se vuelve loca y te cambia todos los carácteres con tildes por ' ? ' o carácteres ilegibles.

De todas formas usa esto antes que ninguna otra cosa en tu código PHP:
Código PHP:
header("Content-Type: text/html;charset=ISO-8859-1"); 
Saludos
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #3 (permalink)  
Antiguo 20/06/2007, 13:26
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Tildes y ñ en bd bien, luego mal

Ahora no sale... Si pongo el php que tú dices, salen mal TODAS las tildes y ñ,
y en la bd he cambiado la í por &iacute;, y al mostrarlo, sale &iacute;. Qué está pasando????????????????? Me voy a volver loco
  #4 (permalink)  
Antiguo 20/06/2007, 13:30
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Tildes y ñ en bd bien, luego mal

Hola de nuevo... en mis webs, yo utilizo
Código HTML:
<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1"> 
y nunca he tenido problema, tampoco he usado nunca he usado el utf8_encode. Elimina cualquier tipo de código como el anterior y prueba de nuevo.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #5 (permalink)  
Antiguo 20/06/2007, 13:38
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Tildes y ñ en bd bien, luego mal

Vale, ya me funciona, RUX, he quitado todo el código anterior y luego he puesto tu codificación y he cambiado todos los caracteres raros.
&iexcl;Much&iacute;simas gracias!!!!!!!!!!!!!!!!! jeje .
  #6 (permalink)  
Antiguo 20/06/2007, 13:44
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Tildes y ñ en bd bien, luego mal

De nada y me alegro mucho .

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #7 (permalink)  
Antiguo 20/06/2007, 14:57
 
Fecha de Ingreso: agosto-2005
Mensajes: 68
Antigüedad: 18 años, 8 meses
Puntos: 4
Re: Tildes y ñ en bd bien, luego mal

Hola,

Cita:
Iniciado por Raulmmmm Ver Mensaje
Tengo un problema, las tildes y las ñ en la bd están bien, pero luego cuando se muestra salen caracteres raros. Y lo más raro de todo es que solo me ocurre cuando muestro información de la bd...
Tengo la codificación en la bd utf-8-general-ci y la de la página:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
Y lo muestro:
utf8_encode(htmlentities($array['titulo']))
Y siguen saliendo caracteres raros...
Además de eso, la codificación de caracteres del fichero con el código fuente debe ser también UTF-8.

Si usas dreamweaver ve a
Modificación->Propiedades de la página->Título/Codificación de caracteres y elige UTF-8, y BOM desmarcado.

Debes de hacerlo página por página, y dejar el charset UTF-8 etiquema meta, tal y como dices en el texto citado.

Saludos.
  #8 (permalink)  
Antiguo 22/06/2007, 02:41
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Tildes y ñ en bd bien, luego mal

¿Hay alguna manera de reemplazar á por &aacute; en la bd? Es que tengo 65 registros, y como que modificarlos a mano no apetece.
  #9 (permalink)  
Antiguo 22/06/2007, 04:04
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Tildes y ñ en bd bien, luego mal

Hola, se puede hacer, te pongo un mini-ejemplo:

Código PHP:
$mal = array('á''é''í''ó''ú''ñ');
$bien = array('&aacute;''&eacute;''&iacute;''&oacute;''&uacute;''&ntilde;');
$consulta mysql_query("SELECT id, texto_utf FROM tabla");
while (
$extraer mysql_fetch_assoc($consulta)){ 
$extraer['texto_utf'] = str_replace($mal$bien$extraer['texto_utf']);
mysql_query("UPDATE tabla SET texto_utf = '".$extraer['texto_utf']."' WHERE id = '".$extraer['id']."'");

Ojo, has una copia de seguridad antes, por si acaso me/te equivoques.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #10 (permalink)  
Antiguo 22/06/2007, 08:03
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Tildes y ñ en bd bien, luego mal

No me funciona. :
Código PHP:
$enlace mysql_connect(xxx);
mysql_select_db(xxx$enlace);
$mal = array('á''é''í''ó''ú''ñ','¡','¿','ü');
$bien = array('&aacute;''&eacute;''&iacute;''&oacute;''&uacute;''&ntilde;','&iexcl;','&iquest;','&uuml;');
$consulta mysql_query("SELECT * FROM videos");
while (
$extraer mysql_fetch_assoc($consulta)){ 
echo 
$extraer['titulo'];
$algo str_replace($mal$bien$extraer['titulo']);
$id $extraer['id'];
mysql_query("UPDATE videos SET titulo = '$algo' WHERE id = '$id'");
echo 
$extraer['titulo'];} 
Es como si no hiciera nada...

Última edición por Raulmmmm; 22/06/2007 a las 08:19
  #11 (permalink)  
Antiguo 22/06/2007, 10:11
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Re: Tildes y ñ en bd bien, luego mal

Para crear las tíldes con la entidad HTML esta la F htmlentities y sus cercaanas...

Sobre las BD:

Siémpre se debe guardar EXACATAMENTE lo que envio el cliente.

Es un error módificar lo enviado por el cliente.

Si el "atacante" envia un virus o una cadena sin espacios de 5000 caracteres pretendiendo sabotear nuestro sitio, tendremos SIEMPRE exactamente lo que ha sido ENVIADO.

El uso de addslashes, wordwrap, y el reemplazo de de las entidades debe estar ewnfocado a la PRESENTACION.

Ya que en PHP6 se pretende eliminar las "comillas magicas", sera necesario agregar addslashes a lo enviado por el cliente, pero en la BD debemos conservar con total fidelidad lo recibido.

Las tecnologías web cambian, y en 20 años deberemos atrpar esos registros ORIGINALES y procesarlos; pero si los hemos MODIFICADO...

Por ello solo la SALIDA debe ser modificada.
  #12 (permalink)  
Antiguo 22/06/2007, 13:40
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Tildes y ñ en bd bien, luego mal

No te fijas que, en mi primer mensaje, uso htmlentities y no funcionaba?
  #13 (permalink)  
Antiguo 23/06/2007, 11:39
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Tildes y ñ en bd bien, luego mal

Bueno, estoy MUUUUUUUUUUUUUUUUUUUUUY perro, pero voy a cambiarlo manualmente .
  #14 (permalink)  
Antiguo 23/06/2007, 12:36
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Tildes y ñ en bd bien, luego mal

En tu base de datos se ven correctamente las á, é, í, etc..??
Quizas debas sustituir en mi codigo dichos carácteres por los que realmente muestra en el navegador, despues.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #15 (permalink)  
Antiguo 24/06/2007, 03:42
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Tildes y ñ en bd bien, luego mal

¡Gracias, RUX, por tu gran ayuda he hecho eso que me has dicho y me ha funcionado!!!!!! ¡Muchísimas gracias a todos!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  #16 (permalink)  
Antiguo 24/06/2007, 12:06
 
Fecha de Ingreso: diciembre-2005
Ubicación: San Blas, Nayarit
Mensajes: 45
Antigüedad: 18 años, 4 meses
Puntos: 1
Re: Tildes y ñ en bd bien, luego mal

Código PHP:
<?
function imprimir_texto($texto){
    
$texto nl2br($texto);
    
$texto stripslashes($texto);
    
//Remplazar tildes
    //En minusculas
$texto str_replace("á","&aacute;",$texto);
$texto str_replace("é","&eacute;",$texto);
$texto str_replace("í","&iacute;",$texto);
$texto str_replace("ó","&oacute;",$texto);
$texto str_replace("ú","&uacute;",$texto);
$texto str_replace("ñ","&ntilde;",$texto);

//En mayusculas
$texto str_replace("Á","&Aacute;",$texto);
$texto str_replace("É","&Eacute;",$texto);
$texto str_replace("Í","&Iacute;",$texto);
$texto str_replace("Ó","&Oacute;",$texto);
$texto str_replace("Ú","&Uacute;",$texto);
$texto str_replace("Ñ","&Ntilde;",$texto);

    return 
$texto;
}

mysql_query("INSERT INTO comentarios ('idcom','usuario','comentario') values(NULL,'".imprimir_texto($_POST["usuario"])."','".imprimir_texto($_POST["comentario"])."')",$conexion);
?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 10:59.