Foros del Web » Programando para Internet » PHP »

Aporte para codificacion UTF8

Estas en el tema de Aporte para codificacion UTF8 en el foro de PHP en Foros del Web. Hola chavales, Muchas veces nos porculea el UTF8, que si la base de datos, que si la codificacion de la pagina, que si el dia ...
  #1 (permalink)  
Antiguo 04/03/2012, 04:23
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 19 años, 1 mes
Puntos: 3
Información Aporte para codificacion UTF8

Hola chavales,

Muchas veces nos porculea el UTF8, que si la base de datos, que si la codificacion de la pagina, que si el dia no es soleado, jejeje... hay muchas soluciones, causas y porques, como :

Código PHP:
Ver original
  1. header ('Content-type: text/html; charset=utf-8');
  2. //////////////////////////////////////////////////////////////////////////////
  3. mysql_query ("SET NAMES utf8");
  4. //////////////////////////////////////////////////////////////////////////////
  5. mysql_query("mysql_set_charset_name(&mysql, 'utf8')");
  6. //////////////////////////////////////////////////////////////////////////////
  7. $tuvariable= iconv('ASCII', 'UTF-8//TRANSLIT', $tuvariable);
  8. //////////////////////////////////////////////////////////////////////////////

y un laaaargo etc

(dejo ahi arriba esos hilos por si alguien quiere seguirlos...)

He generado una funcion que puede ser de gran utilidad para acabar con el problemita de los co#*nes !


Obviamente se pueden agregar más simbolitos raros, yo creo que si alguien se pone hasta se puede codificar el idioma klingon, yo paso



Código PHP:
Ver original
  1. function sanear_string($string)
  2. {
  3.  
  4.     $string = trim($string);
  5.  
  6.     $string = str_replace(
  7.         array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Ä', 'Â'),
  8.         array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Ä', 'Â'),
  9.         $string
  10.     );
  11.  
  12.     $string = str_replace(
  13.         array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê'),
  14.         array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê'),
  15.         $string
  16.     );
  17.  
  18.     $string = str_replace(
  19.         array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
  20.         array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
  21.         $string
  22.     );
  23.  
  24.     $string = str_replace(
  25.         array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
  26.         array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
  27.         $string
  28.     );
  29.  
  30.     $string = str_replace(
  31.         array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Ü', 'Û'),
  32.         array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Ü', 'Û'),
  33.         $string
  34.     );
  35.  
  36.     $string = str_replace(
  37.         array('ñ', 'Ñ', 'ç', 'Ç'),
  38.         array('ñ', '&Ntilde', 'ç', 'Ç',),
  39.         $string
  40.     );
  41.  
  42.     return $string;
  43. }


Para lo que yo lo uso es para detectar si el usuario ha puesto algun caracter "raruno" traducirlo a ascii para poder guardarlo en base de datos y recuperarlo despues y que salga legible para el idioma en cuestion!

y pongo un ejemplo facil sencillo y pa toa la familia de como implementarlo:

Código PHP:
Ver original
  1. $name = $_POST['name'];
  2. $finalName = sanear_string($name);


Espero ser de ayuda para algunos de vosotros!
Saludos!

__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #2 (permalink)  
Antiguo 04/03/2012, 10:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Aporte para codificacion UTF8

para eso están las funciones htmlentities, htmlspecialchars, entre otras, incluso al definir correctamente el charset en el META de la página no hay necesidad de recurir a las mismas
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 04/03/2012, 11:03
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Aporte para codificacion UTF8

maycolalvarez, por experiencia propia, definir los charsets no evita el problema, puesto que depende mucho del navegador del usuario, lo he hecho en el html, la base de datos y en la configuración inicual de php. No obstante, efectivamente con htmentities y utf8_encode no se requiere el convertir caracteres específicos.
  #4 (permalink)  
Antiguo 04/03/2012, 13:32
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: Aporte para codificacion UTF8

Yo agradezco el aporte peeeeero, como bien dicen ya hay funciones nativas en php que solucionan el problema, y es más, esos str_replace sólo te valdrían para la codificación UTF8 del español. Pero ¿Y si es otro idioma? O no nos vayamos tan lejos. ¿Qué pasa en ese código con los caracteres: ¿ ¡ ?
Es más sencillo usar utf8_encode(), más corto y es válido para cualquier cadena con caracteres en ese formato.
__________________
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 04/03/2012, 14:45
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 19 años, 1 mes
Puntos: 3
Respuesta: Aporte para codificacion UTF8

Si si, lo se lo se , solo aporto otro punto de vista a un problema que es muy repetitivo, no digo que no haya mas soluciones, ni metodos...

En mi web hay gente que escribe en frances en aleman en ingles en portugues y español, en un principio fue configurada la base de datos en español por lo que no han sido pocos los problemas que me he encontrado, y esto me ha ido como un tiro!

Bueno en fin señores que al que le sirva buen provecho! :)
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....

Etiquetas: codificacion, html, mysql, sql, aportes, variables, usuarios, 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 15:45.