Como respuesta a una pregunta del foro realmente frecuente, me dispongo a escribir este mini-tip.
Una de las tareas mas desagradables que nos solemos encontrar los desarrolladores web, es la de conseguir que los malditos acentos se vean como deberían en nuestra web.
En mi experiencia no existe una receta única, así es que propondré las que a mi me han funcionado. La mayoría están basadas en usar el juego de caracteres utf-8:
- Imprescindible colocar en el header de nuestro documento html el conjunto de caracteres que estamos usando. Aquí lo declaramos en la cuarta línea:
Código :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Mi web Mola</title> </head> <body> </body> </html>
- Elegir para la codificación de nuestras tablas y campos el juego de caracteres utf-8.
- Para los afortunados que usan PHP, cuando lo anterior falle, pueden usar la la función htmlentities, la cual transforma los caracteres especiales en html (la mayoría de las veces, pero no siempre).
- Me sucedió una ves con una DB MYSQL alimentada desde otra DB MSSQL (con un juego de caracteres que prefiero olvidar) que nada de esto sirvió, hasta que usé las funciones Text Helper del framework para PHP Codeigniter ascii_to_entities().
- Usar un buen editor de texto que genere archivos con la codificación adecuada. Actualmente uso Ultraedit. También me ha dado buenos resultados el viejo Editplus.
- Cuando todo falle y ya no halla mas remedio, escribir directamente en html los caracteres especiales.
Espero les sea de utilidad.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por neohunter el 03 de Septiembre de 2008
Por Inyaka el 03 de Septiembre de 2008
neohunter-blog :
¿cual es tu experiencia con esto y que recomiendas?
¿alguna lectura de referencia?
¿alguna idea revolucionaria?
soy todo oidos
...
ojos
Por The Fricky! el 03 de Septiembre de 2008
neohunter-blog :
Me molesta cuando la gente simplemente dice tonterías sin proponer alternativas. Para criticar cualquiera es bueno ¿no?
Por Freddie el 03 de Septiembre de 2008
neohunter-blog :
Por elchininet el 03 de Septiembre de 2008
neohunter-blog :
Me parece que un "Esto también puede ayudar...", "Discrepo con tu solución, aquí tienen una más optimizada y efectiva", "Creo que es mejor utilizar este método que este otro", etc... es un poco más productivo, no queda sólo en un comentario y además es más ético.
Por neohunter el 03 de Septiembre de 2008
Por neohunter el 03 de Septiembre de 2008
http://www.cristalab.com/foros/t58340_caracter-extrano-que-deforma-el-diseno.html#391557
Por elchininet el 04 de Septiembre de 2008
No son links lo que se nesecita postear, en mi opinión debes postear una disculpa...
Por neohunter el 04 de Septiembre de 2008
elchininet :
No son links lo que se nesecita postear, en mi opinión debes postear una disculpa...
1) Yo no quiero dar soluciones a un problema y ya, sobretodo a algo que es tan importante y frecuente. Me molesta que los desarrolladorse solo se preocupen por encontrar una solucion rapida a sus problemas sin interezarse por la causa. Me molesta que usen funciones de php para cambiar la codificacion del origen de sus datos. Me molesta que crean que definir un META TAG con codificacion UTF-8 va a solucionar el problema, SOBRETODO cuando el documento esta codificado como ANSI. (Esto es como que te duela la cabeza y vayas al doc y le digas que te duele el pie del medio). Me molesta que todos los archivos de un proyecto tengan codificaciones diferentes. Me molesta que solo se preocupen de que se "vea" bien y no sean capaces de apreciar que el problema de i18n va mas alla de sus narices. Que el UTF-8 se creo por una necesidad importante, no por darle problemas a ustedes.
2) Inyaka no esta ofendido por lo que dije, o de lo contrario que lo postee aqui mismo, tuvimos una charla muy chistosa acerca de esto. (y divertida que postee aqui pero la borraron no se porque).
3) Coloque 4 links con muy buen contenido que explican porque pasa esto:
[url=http://www.pbxa.com:8080/ioFramework/wiki/utf-8]
[url=http://www.cristalab.com/foros/t58340_caracter-extrano-que-deforma-el-diseno.html#391557]
[url=http://www.juque.cl/weblog/2006/01/25/ascii-unicode-utf8-y-la-iatarnaaianalizaaian-parte-i.html]
[url=http://www.juque.cl/weblog/2006/04/02/ascii-unicode-utf8-y-la-iatarnaaianalizaaian-parte-ii.html]
(Los ultimos dos estan en el wiki, pero los puse tambien por si alguien quiere acceso mas directo a esas paginas que son muy muy ilustratibas respecto al problema
4) No creo que haya absolutamente nada de malo en que postee mi opinion sin tener la obligacion de complementarlo. Se que es mas provechoso para todos si lo hago, pero simplemente no me nacio hacerlo. La mayoria, digamos un 90% de preguntas que lanzo en los foros de cristalab las contesto yo mismo, y pongo 3, 4 o 5 post seguidos en lo que doy con la respuesta.
5) Donde esta bleend diciendo que todos estaban usando el sarcasmo? =P
Por Inyaka el 04 de Septiembre de 2008
aunque todos, todos nos salimos de madre de ves en cuando
que la paz sea con ustedes *se va flotando en una nube de paz, amor y marihuana
Por elchininet el 04 de Septiembre de 2008
Aunque Inyaka no se haya molestado, a mi en particular me molesta la forma en que te has expresado no en el primer post, sino incluso en el segundo en el que te muestras extremadamente atacante y ofendido.
Te explico a continuación (Yo que no soy un basto conocedor, por lo tanto no puedo molestarme con nada de lo que se diga en este tema) como funciona el character encoding según la W3C:
Lo que haces de salvar el fichero de texto con un character encoding específico no tiene ninguna validez en la web, te explico, un fichero TXT con "character encoding" en ANSI no tiene ningún encabezado, es un fichero vacío totalmente 0Kb, aquí puedes verlo en hexadecimal para que comprendas:
No ocurre lo mismo cuando salvas un fichero TXT en Unicode, Unicode Big Endian o UTF-8, que crea un encabezado para que este fichero al ser leido se comprenda el character encoding que este usa, a continuación te enseño el encabezado de un fichero UTF-8 (Como puedes ver tiene 3 Bytes):
Bueno este mismo método en la web, se debe hacer, según la W3C (en el link que postee anteriormente) con el siguiente método:
XML
Código :
HTML o XHTML
Código :
Por lo tanto el encabezado que te expliqué anteriormente con Hexadecimal, es ignorado cuando el documento es leido en el browser, este encabezado solo es leido cuando el formato es TXT por el programa que lo lee, cuando el formato es leido en el browser este lee todo lo que esté entre tags "<>", es por eso que Dreamweaver independientemente del character encoding que hayas escogido salva el documento html como ANSI que es un documento vacío completamente.
Si no aclaras el character encoding como meta según la W3C tu fichero html no será un fichero válido.
Por datta el 04 de Septiembre de 2008
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
Borro esa línea de código y pego.
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
¿Soluciono los problemas que ya tengo con los acentos ñ y demás o lo que esta mal esta mal y debo de cambiarlo manualmente?
Gracias y disculpa la molestia.
Por Freddie el 04 de Septiembre de 2008
datta-blog :
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
Borro esa línea de código y pego.
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
¿Soluciono los problemas que ya tengo con los acentos ñ y demás o lo que esta mal esta mal y debo de cambiarlo manualmente?
Cambiar una tabla MySQL a UTF-8 es relativamente facil. El bloc de notas puede guardar tu código en UTF-8 también en el dialogo de "Guardar como".
Por datta el 05 de Septiembre de 2008
Por neohunter el 05 de Septiembre de 2008
Por elchininet el 05 de Septiembre de 2008
Por 0skr el 07 de Septiembre de 2008
Por Otaku RzO el 08 de Septiembre de 2008
Me ha dado gusto leerlos y que hayan hecho las pases . *los patea a todos y huye. wiiiii
Por fabiola el 13 de Septiembre de 2008
Por carlosneuron el 04 de Noviembre de 2008
este es el codigo de php que estoy usando
<?
$fichero = "texto.txt";
$texto = $_POST["texto"];
if($texto != ''){
if($fp = fopen($fichero,"w+")){
fwrite($fp,stripslashes($texto));
echo 'Archivo modificado<br><br>';
}
fclose($fp);
}
$fp = fopen($fichero,"r");
$contenido = fread ($fp, filesize ($fichero));
fclose($fp);
echo "<form method=\"POST\"><textarea name=\"texto\">$contenido</textarea><br><input type=\"Submit\" value=\"Guardar\"></form>";
?>
Por DevCH el 09 de Mayo de 2009
Código :
FUNCTION
Código :
Esta función me debería devolver:
Sábado 09 de Mayo del 2009
pero me devuelve:
Sábado 09 de Mayo del 2009
Ya le cabié a UTF-8 pero de todos modos me da el mismo resultado, que estaré haciendo mal?
Por victor aviles. el 18 de Marzo de 2010
tengo un problema de lectura con los archivos de texto...
cundo abro este archivo con wordpad. y lo guardo como tipo "documento de texto", mi php de importación funciona perfectamente, pero cuando lo salvo como "documento de texto unicode" no, ya que cuando realizo la importación del archivo.. me tira puros garabatos.. en el browser...
cual será el problema.. ??
el codigo para abrir el archivo es el siguiente.
$ruta="d:/nombres.txt";
if($file = fopen($ruta, 'rb')){
while(!feof($file)){
$linea = fgets($file);
echo $linea;
}
fclose($file);
}
si realizan el ejercicio de abrir con wordpad, y salvarlo como tipo "documento de texto unicode" entonces el resultado del navegador cambia.
Tengo un software que emite automáticamente un reporte en unicode.. y yo necesito automáticamente leerlo con mi módulo... es por esto que les agradeceria si me pueden ayudar a saber como camiarle el formato via codigo... o bien es problema de configuración de mi browser...
porfavor cualquier ayuda.. se las agradeceria. a mi mail.
gracias. [email protected]
Por elchininet el 18 de Marzo de 2010
Código :
Lo mejor es que busques un software que emita el reporte en utf-8.
Por victor aviles el 22 de Marzo de 2010
pero no resulta bien,, soloresuelve uno que otro campo..
lo otro que descubrí, es que en firefox se ve concaracteres raros, pero en IE no.. .. será configuracion de mi browser??? como puedo saber que es realmente lo que gatilla esto??
Por elchininet el 22 de Marzo de 2010
Haz una prueba, observa esta página.
Notarás que en Firefox no se ven los caracteres y cuando vas a Ver > Cofificación de caracteres > Occidental (ISO 8959-1) se te ven bien (En IExplorer se ven bien desde el principio), esto se debe a que la página no tiene especificado el tipo de charset en el meta "Content-Type" y Firefox intenta situarlo en UTF-8, así que lo mismo te debe suceder a ti, prueba cambiar o situar en caso que no esté el siguiente meta:
Código :
Donde "xxxxxxxxx" es el tipo de charset.
Por rodo el 03 de Septiembre de 2010
tengo varios archivos xml y en uno de ellos (donde está el texto de las secciones, cambié la primera línea de código. pero sigue sin verse bien.
estaba:
<!-- <?xml version="1.0" encoding="iso-8859-1"?> -->
y puse:
<?xml version="1.0" encoding="utf-8" ?>
pero nanais. no funcionó.
¿Alguien me pueden ayudar? gracias
Por elchininet el 05 de Septiembre de 2010
Por CLAnonimo el 10 de Diciembre de 2010
en otros foros me dicen q debo guardar en flash utf8 pero en esa parte no tengo idea de como realizarlo.
gracias por su pronta respuesta
Por elchininet el 11 de Diciembre de 2010
Para guardar tu XML como unicode o UTF-8 (Si tu editor no lo hace), lo más fácil es que lo abras con el Notepad y a la hora de guardarlo escojas Unicode o UTF-8.
Por Rul el 15 de Febrero de 2011
Por victor juarez el 21 de Noviembre de 2011
gracias de nuevo
Por Joe Joe Joe el 04 de Marzo de 2013
Por Ramón Alfaro Velis el 07 de Septiembre de 2013
Graaaaaaaaaaaaaaaaacias.
Por mercadillo el 07 de Septiembre de 2013
Por kevin el 26 de Julio de 2014
Por el 16 de Marzo de 2015
Por Nayeli el 26 de Marzo de 2015
Por No fue Nayeli el 26 de Marzo de 2015
Por HOLA el 03 de Julio de 2015
Por Panfilo01 el 03 de Julio de 2015