Conversión de archivos de texto plano de ASCII a Unicode sin ningún comando

Conversión de archivos de texto plano de ASCII a Unicode sin ningún comando

¿Por qué los archivos codificados en ASCII se extienden a UTF-8 o, a la inversa, se reducen a ASCII?

user:~$ echo 'A  B  C  |  }  ~' > ./file 
user:~$ 
user:~$ file --brief --mime ./file
text/plain; charset=us-ascii
user:~$ 
user:~$ 
user:~$ echo 'ᴁ  ♫  ⼌  

Respuesta1

Creo que estás confundiendo "codificación" y "conjuntos de caracteres".

En el primer caso, el archivo contiene sólo caracteres que se encuentran en US-ASCII. Esto significa que el archivo tendrá el mismo aspecto sin importar la configuración de idioma que utilice para mostrarlo.

En el segundo caso, el archivo ahora contiene caracteres que pertenecen al juego de caracteres UTF8, porque eso es lo que usted puso en él.

Aquí no se está produciendo ninguna conversión; el comando simplemente le informa cuál es el contenido del archivo.

Respuesta2

El filecomando simplemente adivina qué hay en los archivos que usted analiza. Realiza el análisis leyendo una cierta cantidad de bytes del encabezado de un archivo, a veces en un proceso de varios pasos (si encuentra algún marcador claro al principio). En un archivo de texto no estructurado, seguramente leerá más caracteres que los que hay en su archivo extendido ./file, por lo que analiza todos los caracteres.

En su segundo ejemplo, coloca algunos caracteres utf-8 en un archivo y, en base a eso, fileconcluirá este archivo utilizando el utf-8conjunto de caracteres. Si tiene, por ejemplo, un archivo de 900 Kb con solo caracteres ASCII y agrega su línea de eco 'utf-8', fileaún así lo reportará como un archivo codificado en ASCII, porque no leyó hasta los caracteres codificados en utf-8.

El umbral se sitúa cerca de los 100 Kb.

información relacionada