Foros del Web » Programando para Internet » PHP »

UTF-8 mysql php :@

Estas en el tema de UTF-8 mysql php :@ en el foro de PHP en Foros del Web. :mole sto: Voy a intentar poner cuantos mas datos pueda y el problema supongo que es de sobra conocido, pero ya he probado todas las ...
  #1 (permalink)  
Antiguo 28/05/2011, 15:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Exclamación UTF-8 mysql php :@

:mole sto:

Voy a intentar poner cuantos mas datos pueda y el problema supongo que es de sobra conocido, pero ya he probado todas las soluciones y no se que C*****S pasa

Codificacion de la base de datos:

Language: Spanish(es-utf-8)
Juegos de caracteres de MySQL: UTF-8 Unicode (utf8)
Cotejamiento de las conexiones MySQL:utf8_general_ci

Codificacion de la tabla a la que le hago el select:

Cotejamiento: utf8_general_ci

Contenido de la tabla a la que hago el select vista desde el phpMyAdmin:

idProvincia | nombre
1 | Álava

Codigo PHP

Código PHP:
Ver original
  1. header('Content-Type: text/html; charset=UTF-8');
  2.    
  3.     function mostrarProvincias($texto){
  4.         $provincias = obtener("SELECT * FROM provincia WHERE nombre LIKE '%$texto%'");
  5.         for($x=0;$x<count($provincias);$x++){
  6. echo        $provincias[$x]['nombre'].'<br />';
  7.         }
  8.     }

Codigo HTML

Código HTML:
Ver original
  1.     <head>
  2.         <title>Gotero</title>
  3.         <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  4.     </head>
  5.     <body>
  6.         <?php
  7.        
  8.             if(isset($_GET['a'])){
  9.                 include_once("../lib/bbdd.php");
  10.                 switch($_GET['a']){
  11.                     case 'provincias':
  12.                         if(isset($_GET['texto']))
  13.                             mostrarprovincias($_GET['texto']);
  14.                         break;
  15.                 }
  16.             }
  17.            
  18.         ?>
  19.     </body>
  20. </html>

El problema, que me muestra en vez de Álava, un interrogante, y "lava"
  #2 (permalink)  
Antiguo 28/05/2011, 15:26
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: UTF-8 mysql php :@

Te has complicado un poquito. No necesitas tanta codificación en la base de datos ni el header. Te debería bastar con el meta. Es posible que se deba a como has guardado la palabra en la base de datos.
De todas formas otra opción es hacer una función para remplazar las vocales y la ñ por sus "&acute" correspondientes que tampoco ocupa mucho.

Comprueba el meta, pero en teoría se tiene que cumplir lo siguiente:

Código PHP:
<!-- imprime bien Álava-->
   <html>
        <head>
            <title>Gotero</title>
           <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        </head>
        <body>
            <?php echo'Álava'?>
        </body>
    </html>

<!-- imprime MAL Álava-->
   <html>
        <head>
            <title>Gotero</title>
            <!-- Sin el meta -->
           <!--  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> -->
        </head>
        <body>
            <?php echo'Álava'?>
        </body>
    </html>
Creo recordar que al hacer los includes no se cogen las tildes bien ni aún poniendo el meta, por si te sirve de algo, aunque compruébalo porque no recuerdo al 100%
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 28/05/2011, 15:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

xD ya te digo yo que no me he complicado demasiado xD se puede tener suerte, y trabajar sobre proyectos que salga ya todo bien, o tener como esta vez la mala suerte de que no se por donde, no coge bien los acentos, ni las ñ's ni las ç's.

El meta esta puesto, osea que poco puedo revisar, y no puedo convertir los acentos a su respectivo &acute; por que al recogerlo de la bbdd ta no puedo saber que es un acento, y en la base de datos, necesito tener los textos bien para hacer busquedas del tipo WHERE nombre LIKE '%x%';

EDITO:
Es mas, he comprobado a poner lo de.

<?php echo "Álava - Alava"; ?>

y tanto con el meta puesto, como con el meta quitado, me lo pinta bien, el problema para mi, es al leer los datos de la base de datos con php, ya lo recibe con el interrogante, entonces no puedo hacer nada. Y no se que mas configurar en la bbdd o en php.
  #4 (permalink)  
Antiguo 28/05/2011, 16:14
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: UTF-8 mysql php :@

¿Qué no puedes poner los acutes por la consulta?
Mmmmmm... expande tu mente, la consulta cuando la escribes en php no es más que texto e igual que puedes cambiar las tildes por los acutes en 2 líneas puedes hacer el paso inverso

Es raro que sin el meta el navegador te esté cogiendo la tilde bien al poner Álava. Me parece extraño, pero no uso todos los navegadores ni todas las versiones así que no me arriego por ahí.

No sé como estás guardando los datos y como es muy posible que sea por el tipo de dato de la BD lo más que te recomiendo es:

-Conviertes con los acutes las ciudades y haces el insert.
-En el select cambias la condición con la misma función, en vez de buscar álava que busque &aacute;lava.
-Al mostrarlas en pantalla no necesitas hacer ninguna conversión porque html interpreta correctamente los acutes

Vamos que con 2-3 líneas cortas resuelves el problema y el usuario siempre verá todo de forma correcta, por detrás haces los cambios.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #5 (permalink)  
Antiguo 28/05/2011, 16:29
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

Se que hay parches, pero no quiero parches, quiero que funcione como debe, no es una aplicacion para guardar cuatro cosas en la base de datos. Pero gracias por tu ayuda, a ver si alguien sabe por que no va bien.
  #6 (permalink)  
Antiguo 28/05/2011, 16:38
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: UTF-8 mysql php :@

¿Pache cambiar con php las tildes?
Tan parche como colocar un meta o un header La idea es que el navegador interprete el caracter.



¿Quieres que te digan el error? Cambia el tipo de los campos de la BD. Amm que eso ya lo sabías... Pues no sé que más soluciones quieres que te den.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 28/05/2011, 16:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

A ver IEKK, si cambio en la bbdd los acentos por acutes, luego cuando el usuario escriba letras con acentos o ñ's o ç's, tengo que pasarlo a acutes agreves o ntildes o cuml, a esto yo lo llamo parche, no te pide que me digas mas cosas, pido, a otro posible lector, que le pueda haber pasado lo mismo o que vea algun fallo que me lo diga. Y a ti gracias por tu aporte. :)
  #8 (permalink)  
Antiguo 28/05/2011, 17:10
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: UTF-8 mysql php :@

¬¬ esto ya es de cachondeo ¿No? Si sabes que tu problema está en la base de datos y que tienes que cambiar el tipo de dato... ¿Aún le preguntas a otro "lector" donde está tu fallo?

En tu caso es ceguera por placer... Yo ya no digo más.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #9 (permalink)  
Antiguo 28/05/2011, 17:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

Por cierto, otro dato:

Si en el Firefox le doy a Ver -> Codificacion de caracteres -> Occidental(ISO-8859-1) si que se ve bien. :S
  #10 (permalink)  
Antiguo 28/05/2011, 17:15
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: UTF-8 mysql php :@

Que tal des_trozado,

Has comprobado el encoding de los ficheros y el encoding en el que te esta sirviendo apache ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #11 (permalink)  
Antiguo 28/05/2011, 17:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

El encoding de los ficheros es UTF-8 sin BOM, y el encoding del servidor apache como puedo comprobarlo? he mandado un correo al contacto del hosting comentandole eso, pero donde puedo mirarlo yo?
  #12 (permalink)  
Antiguo 28/05/2011, 17:27
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: UTF-8 mysql php :@

Con Firefox dale click derecho sobre la pagina y anda a View Page Info, ahí debería mostrarte el encoding con el que sirve apache y el meta.
__________________
http://es.phptherightway.com/
thats us riders :)
  #13 (permalink)  
Antiguo 28/05/2011, 17:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

Si sale, pero en el encoding me pone el que ponga yo en el firefox y el meta lo coge bien, por lo que estoy pudiendo ver, con la norma que se ve bien, la ISO-8859-1, es la latin1, por lo que creo que el servidor me va a obligar a usar ese encoding.
  #14 (permalink)  
Antiguo 28/05/2011, 17:36
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: UTF-8 mysql php :@

El encoding es el encoding con el que sirvió la pagina, te dice UTF-8 o ISO ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #15 (permalink)  
Antiguo 28/05/2011, 21:58
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años
Puntos: 1
Respuesta: UTF-8 mysql php :@

porque no pruebas poner esto en tu index o en tu cabecera

Código PHP:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"
y codificar tu database principal en utf8_general_ci

ami me va bien , hoy justo tenia el mismo problema que usted y lo solucione de esta forma no se si sea la mejor pero va bien
  #16 (permalink)  
Antiguo 29/05/2011, 07:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

pueeeeessss bueeeeeeno, ahora funciona bien, tanto insertar como al leer de la bbdd, pero en la base de datos en vez de ponerme un acento me pone à pero bueno xD gracias a todos por los comments, ya creo que tengo lo que necesitaba para arreglarlo.

Bueno al final la cosa esta siedo, el insertar los datos: utf8_decode, al recogerlos: utf8_encode, y el meta que uso en la pagina html es: iso-8859-1 y al codificacion de los ficheros es UTF8 y la bbdd esta en latin1.

:D como me guuuuusta la programacion :D

Última edición por des_trozado; 29/05/2011 a las 07:27
  #17 (permalink)  
Antiguo 15/09/2011, 14:15
 
Fecha de Ingreso: marzo-2004
Ubicación: Bariloche
Mensajes: 8
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: UTF-8 mysql php :@

Acabo de probar esta cuestión....


En la BBDD tengo UTF8-General-ci y el php tengo <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Esto me devulve todos los caracteres como corresponde en español

Saludos

Etiquetas: html, mysql, utf-8
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




La zona horaria es GMT -6. Ahora son las 09:58.