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 caracteresutf-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 Codeigniterascii_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.
...me molesta cuando los desarrolladores web se vuelven locos tratando de que una tilde se vea como se debe ver e intenten 10.000 trucos y formas antes de leer un poco sobre codificacion y comprender verdaderamente porque pasa esto. Por:neohunter
neohunter-blog :
...me molesta cuando los desarrolladores web se vuelven locos tratando de que una tilde se vea como se debe ver e intenten 10.000 trucos y formas antes de leer un poco sobre codificación y comprender verdaderamente porque pasa esto.
¿cual es tu experiencia con esto y que recomiendas?
...me molesta cuando los desarrolladores web se vuelven locos tratando de que una tilde se vea como se debe ver e intenten 10.000 trucos y formas antes de leer un poco sobre codificacion y comprender verdaderamente porque pasa esto.
Me molesta cuando la gente simplemente dice tonterías sin proponer alternativas. Para criticar cualquiera es bueno ¿no? Por:The Fricky!
neohunter-blog :
...me molesta cuando los desarrolladores web se vuelven locos tratando de que una tilde se vea como se debe ver e intenten 10.000 trucos y formas antes de leer un poco sobre codificacion y comprender verdaderamente porque pasa esto.
Últimamente veo que posteas molesto, criticando las iniciativas, pero nunca dando soluciones. Cuéntanos tu experiencia y aporta si tan molesto estás. Por:Freddie
neohunter-blog :
...me molesta cuando los desarrolladores web se vuelven locos tratando de que una tilde se vea como se debe ver e intenten 10.000 trucos y formas antes de leer un poco sobre codificacion y comprender verdaderamente porque pasa esto.
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:elchininet
No son links lo que se nesecita postear, en mi opinión debes postear una disculpa... Por:elchininet
elchininet :
Los links son una de las soluciones de Inyaka
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:neohunter
la verdad no me sentí ofendido, por que se que lo que dijo fue un error de habilidad social, si, fue un error no una mala intención, eso no quita caballeros (plural por los que vendrán) que hay que pensar antes de escribir, no solo técnicamente, si no que también socialmente en como se sentirá la otra persona que esta detrás del pc con nuestros dichos.
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:Inyaka
En el momento en que alguien se moleste tanto por un asunto que otra persona haga supuestamente mal, por lo mínimo esta persona molestada debe ser un basto conocedor del tema del que se está hablando. Y cuando digo un basto conocedor, no me refiero a que se haya leido 2 páginas de un blog o algún tutorial del problema específico, sino que al menos esa sea su especialidad o sea la persona que haya creado el conocimiento. Si esto no se cumple, entonces muchas veces esta persona se cree que sabe mucho de un asunto y en realidad solo tiene una pequeña idea de el mismo, por lo que NO TIENE derecho en molestarse si alguien no lo hace como el cree.
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:
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 metasegún la W3C tu fichero html no será un fichero válido. Por:elchininet
(Inyaka) asi que en mi caso ya tengo una Web con la codificación.
<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:datta-blog
datta-blog :
(Inyaka) asi que en mi caso ya tengo una Web con la codificación. <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?
También debes configurar tu editor de código (Y base de datos, si obtienes datos de una) para usar UTF-8.
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:Freddie
Gracias Freddie por la respuesta, veamos que logro ya que uso wordpress para las páginas. Por:datta-blog
Yo también pido disculpas, no solo a @neohunter sino a toda la comunidad por tomarme tan a pecho el asunto y reflejar indignación en mis palabras. Por:elchininet
"y asi la paz reina nuevamente en cristalab..." Por:0skr-blog
Gracias Inyaka, Neohunter y elchininet por dejar bien en claro todo el tema. *a favoritos!
Me ha dado gusto leerlos y que hayan hecho las pases . *los patea a todos y huye. wiiiii Por:Otaku RzO
eske oe cachate ke mira pon iconos pero ke se puedan poner en el mns ¡¡¡ ha¡ Por:fabiola-blog
estoy usando un php para modificar el contenido de un txt el problema es que al modificar el txt ya no me respeta el formato UTF-8 y ahi es cuando tengo problemas con los acentos y los caracteres especiales, como le puedo hacer?
Hola a todos he leido y aprendido de ustedes. he tomado la configuración que mas se acomoda a mi problema. Resulta que mi php debe devolver un XML, que entre otros datos debe devolver una fecha en cadenas (fecha larga), la cabecera: