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

Responder a