Publicado por Juan Pablo el 10.Jul.2007 | Comentarios (17)
Aunque el título no es el más adecuado sí se da a entender para el motivo de esta entrada, el título debería ser “Limpiar Latin1 corrupto” pero para un mejor posicionamiento elegí el actual título, pero vamos al grano (como dijo el dermatólogo).
¿A más de alguien le ha pasado que al intentar migrar el contenido de un sitio o blog de ISO-8859-1 a UTF-8 le ha dado un resultado horroroso?, o posiblemente ¿a más de algún otro le ha llegado un correo electrónico que no logra entender del todo porque tiene caracteres basura?, ¿Por qué ocurre?.
Algunos datos:
Por lo tanto cualquier caracter que esté debajo del 127 es perfectamente compatible con utf-8, ¿pero qué sucede cuando los caracteres son superiores al 127?, aquí es donde ocurren los problemas de compatibilidad.
¿Qué ocurre cuando un caracter utf8 es mostrado en una página que dice ser ISO-8859-1?, tendremos problemas de compatibilidad, dado que para utf8 algunos caracteres pueden representarse con más de un bytes en ISO-8859-1 esto no ocurre, todos los caracteres son sólo de un bytes (256) de longitud, si para UTF8 la ñ es C3B1, para iso-8859-1 el C3 y el B1 son dos caracteres distintos, por lo tanto buscará quién es C3 y quién es B1:
¿Te son familiares?, el gráfico mostrado es una adaptación del que aparece en wikipedia. ¿Ahora entiendes por qué se produce esta basura?.
Bien, ahora que se entendió el problema presento una pequeña aplicación que limpia el código corrupto que se genera al mostrar UTF-8 en un documento ISO-8859-1. Con ustedes: Limpia UTF-8 (pensé 3 días el nombre que le daría).
Los condimentos usados para Limpia UTF-8 fueron:
No olvides agradecer si esta pequeña aplicación te fue de utilidad.
Actualización: Una nota aclaratoria, esta utilidad limpia texto que fue migrado de mala forma, es decir, cuando ya no existe vuelta atrás, para cambiar la codificación de un archivo yo uso vim o bien iconv. Sobre liberar el código creo que es posible, pensaré la forma de hacerlo cómodamente para el su uso vía línea de comandos.
Enlace Permanente, Comentarios (17), Publicada en: Recursos
Yo le hubiera puesto iso2utf, que aunque no es estrictamente correcto, pues ISOs existen en muchos tipos y sabores, y además existe más de un UTF, tiene la gracia de la simplicidad. En todo caso lo estuve probando y funciona "de pelos".
Hola!!
estoy buscando una aplicacion asi como el agua de mayo, de donde me la podria bajar ? ya que mis archivos a tratar son muy grandes para ponerlos en una caja de texto
Hola, me parece muy útil, pero ... ¿Qué te parece si cuelgas el código con una licencia libre? Así se podrían hacer algunas utilidades derivadas, p.ej: un script shell que revise un sitio entero y devuelva una réplica limpia.
Hola!!
estoy buscando una aplicacion asi como el agua de mayo, de donde me la podria bajar ? ya que mis archivos a tratar son muy grandes para ponerlos en una caja de texto
y el codigo?
Juque, ¿podrías agregarle esa funcion que copia automaticamente al portapapeles lo ya corregido? O es muy complicado?
Gracias
guido_cc: lo tendré en cuenta para un siguiente release.
"talk is cheap,show me the code" ;-)
Muchísimas gracias, ya iba a hacer replaces masivos en el editor de texto :P
Para la gente que pregunta, a la aplicación se accede por el link que aparece.
Muchas gracias.
te amo, con pasión gitana.
No tendrías un script que haga lo contrario, que ne lugar de Limpiar UTF8 corrupto, Genere UTF8 corrupto, me explico:
Que una frase buena como "el Ñandú" te genere como resultado el código basura: el ÑandÃ
Esto porque necesito saber el código basura que tengo en mi BD y no encuentro un listado completo en ninguna parte para ¡
Gracias.
Se cortó mi anterior comentario porque escribí el simbolo de "menor que" y seguro Wordpress pensó que era código y anuló la frase.
Decía:
Esto porque necesito saber el código basura que tengo en mi BD y no encuentro un listado completo en ninguna parte para ¡ (símbolo menor que) ÁÉÍÓÚ y quien sabe que otros símbolos me falten.
Eso es simple de hacer, en tu navegador Firefox cambia la codificación de esta misma página a iso-8859-1 y verás el resultado de lo que pides.
Gracias !!! ^_^
QUEREMOS EL CODIGO, tiralo gpl !!!!! gracias