Conversión de files de text sin formatting de ASCII a Unicode sin ningún command

¿Por qué los files con encoding ASCII se extienden a UTF-8 o en reversa se networkingucen a ASCII?

user:~$ echo 'ABC | } ~' > ./file user:~$ user:~$ file --brief --mime ./file text/plain; charset=us-ascii user:~$ user:~$ user:~$ echo 'ᴁ ♫ ⼌ 𝐑 🀵 🈀' >> ./file user:~$ user:~$ file --brief --mime ./file text/plain; charset=utf-8 user:~$ user:~$ user:~$ cat ./file ABC | } ~ ᴁ ♫ ⼌ 𝐑 🀵 🈀 user:~$ user:~$ user:~$ sed -i '$d' ./file user:~$ user:~$ cat ./file ABC | } ~ user:~$ user:~$ file --brief --mime ./file text/plain; charset=us-ascii user:~$ 

En caso de que no pueda leer un carácter en la segunda statement de echo : del primero al último: U + 1D01, ᴁ; U + 266B, ♫; U + 2F0C, ⼌; U + 1D411, 𝐑; U + 1F035, 🀵; U + 1F200, 🈀.

La configuration regional es:

 user:~$ echo $LANG en_US.UTF-8 user:~$ echo $LANGUAGE en_US:en user:~$ echo $LC_COLLATE user:~$ echo $LC_CTYPE user:~$ echo $SHELL /bin/bash user:~$ echo $SHELL /bin/bash user:~$ user:~$ ps -p $$ PID TTY TIME CMD 7537 pts/6 00:00:00 bash user:~$ 

Creo que estás confundiendo "encoding" y "juegos de caracteres".

En el primer caso, el file contiene solo caracteres encontrados en US-ASCII. Esto significa que el file se verá igual independientemente de la configuration de idioma que esté utilizando para mostrarlo.

En el segundo caso, el file ahora contiene caracteres que pertenecen al set de caracteres UTF8, porque eso es lo que pones en él.

No hay conversión sucediendo aquí; el command simplemente le informa de cuáles son los contenidos del file.

El command de file simplemente adivina qué hay en los files que lo tiene analizar. Hace el análisis leyendo una cierta cantidad de bytes del encabezado de un file, a veces en un process de varios pasos (si encuentra algún marcador claro al principio). En un file de text no estructurado, seguramente leerá más que el número de caracteres que están en su ./file extendido, por lo que analiza todos los caracteres.

En su segundo ejemplo, coloca algunos caracteres UTF-8 en un file y, en function de ese file , concluirá este file utilizando el juego de caracteres utf-8 . Si tuviera, por ejemplo, un file de 900 Kb con solo caracteres ASCII y anexe su línea de eco 'utf-8', el file todavía lo informará como un file codificado en ascii, ya que no fue tan lejos como los caracteres codificados en utf-8.

El umbral se encuentra en algún lugar cerca de 100 Kb