El Thu, 08 Oct 2015 17:10:28 -0500, Debia Linux escribió: > Quiero comentarles que tengo un formulacio sencillo en un script que a > su vez genera un archivo de texto. > > Algo asi como > > echo "Escribe una frase" > read frase > > echo "$frase" > texto.txt > > Pero cuando quiero ver la codificacion del texto (que deberia ser utf-8 > me arroja el siguiente mensaje > > file --mime-encoding texto.txt texto.txt: binary
(...) Puedes intentar con "file -d" por si vieras algún carácter o terminación de línea extraña pero algo relacionado con esto hablamos en la lista no hace mucho. Parece que las utilidades base (file, grep...) están poniéndose pejigueras con la codificación de los archivos y las detecciones que hacen no siempre andan finas. En primer lugar, habría que analizar cómo se genera ese archivo de texto ya que, p. ej., si se ejecuta desde una consola la codificación debe ser la que tengas definida como variable de entorno y la que tengas en la consola desde donde ejecutas el script. Si el usuario puede copiar/pegar texto en la terminal, ese texto puede venir de distintas fuentes (página web, e-mail...) que también puede contener una codificación determinada y entrar en conflicto con la de la consola por lo que lo ideal sería que sanearas la entrada de datos antes de almacenar la variable, es decir, forzar el uso de un tipo de codificación como UTF-8 o impedir el uso de ciertos caracteres (sólo A-Z y números). > ¿Alguna idea de lo que puede estar pasando o como puedo corregir este > archivo que es de texto y que el comando file me dice que es binario?. No hagas caso de lo que diga "file", no siempre acierta. Si te muestra caracteres raros tendrás que convertir el archivo con iconv (de iso-8859/ ascii a utf-8 o viceversa). Saludos, -- Camaleón