Solucionando los errores de codificación con iconv
Uno de los problemas que seguro hemos tenido todos, es tener un archivo con una codificación, abrirlo con otra y encontrarnos caracteres raros; como el sÃmbolo de copyright, cuadrados, virgulillas encima de las A, etc.
Estos errores se producen porque no los abrimos con la codificación debida. A continuación os pongo un ejemplo:
Tenemos un archivo UTF-8, y lo abrimos con un editor de texto que lo va a interpretar como ISO-8859-1, ¿que es lo que pasará?.
El editor, mediante la norma de codificación de ISO-8859-1, interpretarÃa el texto codificado en UTF-8 de forma incorrecta. Como si por ejemplo, le dieras a un árabe un texto escrito en castellano, ya que éste empezarÃa a leerlo de forma errónea de derecha a izquierda, interpretando las palabras incorrectamente. Algo asà pasarÃa a UTF-8 e ISO-8859-1, pero con respecto al número de bytes (y otras normas) para interpretar las letras. En ese caso, nos encontrarÃamos con sÃmbolos (?), con caracteres “Âa”, etc.
Hasta aquà muy bonito todo ¿pero, cómo me aconsejas solucionar el error?
Para empezar, deberÃamos saber dos cosas, que codificación lee nuestra aplicación y en qué codificación está nuestro archivo:
Saber la codificación de nuestro archivo
file --mime-encoding archivo
Una vez sabemos la codificación ya podemos pasar a la conversión:
iconv -f codificaciondeentrada -t codificaciondesalida archivodeentrada > archivodesalida
Ejemplo de uso
file --mime-encoding a.php iconv -f UTF-8 -t ISO_8859-1 a.php > _a.php
Una de las cosas que estarÃa genial seria hacer que la función file, devolviera solo la codificación, para concatenarla a la función iconv; con el objetivo de realizar un script que recorra una carpeta y que se asegure que todos los archivos de ésta, están en una codificación determinada. ¿Proponéis algún script? ¿se os ocurre alguna manera?, ¿hacemos caso a las convenciones definidas en el inicio de un proyecto y usáis UTF-8, o solo os dais cuenta al final, cuando las cosas van mal?
