El Wed, 30 Sep 2015 19:05:39 +0200, Manolo Díaz escribió: > El miércoles, 30 sep 2015 a las 16:28 UTC Camaleón escribió: > >> El Wed, 30 Sep 2015 18:20:58 +0200, Manolo Díaz escribió: >> >> > El miércoles, 30 sep 2015 a las 15:45 UTC Camaleón escribió: >> > >> >> El Wed, 30 Sep 2015 17:13:13 +0200, Manolo Díaz escribió: >> >> >> >> > El miércoles, 30 sep 2015 a las 14:31 UTC Camaleón escribió: >> >> > >> >> >> Buscando en Google he visto que esta "característica" está >> >> >> documentada en la versión de grep que tienes (2.21), vamos, que >> >> >> ni bug ni fantasmas ni gaitas... misterio resuelto: >> >> >> >> >> >> http://savannah.gnu.org/forum/forum.php?forum_id=8152 >> >> >> >> >> >> If a file contains data improperly encoded for the current >> >> >> locale, and this is discovered before any of the file's contents >> >> >> are output, >> >> >> grep now treats the file as binary. >> >> >> >> >> >> >> >> > Extraño. Así que caracteres que son inválidos en utf8 pueden no >> >> > serlo en C. Creía que el último era un subconjunto de cualquier >> >> > otro. >> >> >> >> Lo que sucede es que el archivo "passwd" está codificado en >> >> "iso-8859" >> >> y grep está usando utf-8 de ahí que lo interprete mal y en la nueva >> >> versión te lo detecta como binario. >> > >> > Por lo que sé está codificado en ascii. >> >> (...) >> >> No, la tabla de caracteres iso-8859 no es la misma que la tabla de >> caracteres ascii, obviamente. > > ¿Y? Esas tablas son superconjuntos o ampliaciones de ascii > (compatibilidad hacia atrás). Si un fichero, p.ej. /etc/passwd, pasa el > test ascii, si solo contienen esos caracteres, por fuerza ha de pasar > *cualquiera* de los test iso-8859-* y utf8.
Si quieres trabajar con archivos codificados y después interpretarlos (leerlos) con distintos sistemas de codificación tienes que convertirlos antes o te arriesgas a que presenten errores en la visualización. Y ya he dicho que igual le podía haber fallado con LANG=C, que le haya funcionado ha sido casualidad. >> Si un documento codificado en iso-8859-1 incluye un carácter que no >> está en ascii N o lo conviertes a ascii o al leerlo te aparecen >> caracteres extraños. Lo mismo pasa con utf-8 (quienes trabajan con >> archivos de texto habitualmente sufren estos problemas en sus propias >> carnes). > > Ese es un caso distinto al que estamos tratando. De hecho es el caso > inverso. No lo creo. El archivo origen es iso-8859, no ascii. Saludos, -- Camaleón