Conversão de arquivos de texto simples de ASCII para Unicode sem qualquer comando

Conversão de arquivos de texto simples de ASCII para Unicode sem qualquer comando

Por que os arquivos codificados em ASCII são estendidos para UTF-8 ou, ao contrário, reduzidos para ASCII?

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

Responder1

Acho que você está confundindo "codificação" e "conjuntos de caracteres".

No primeiro caso, o arquivo contém apenas caracteres encontrados em US-ASCII. Isso significa que o arquivo terá a mesma aparência, independentemente das configurações de idioma usadas para exibi-lo.

No segundo caso, o arquivo agora contém caracteres pertencentes ao conjunto de caracteres UTF8, porque é isso que você coloca nele.

Não há nenhuma conversão acontecendo aqui; o comando está simplesmente informando qual é o conteúdo do arquivo.

Responder2

O filecomando apenas adivinha o que está nos arquivos que você analisa. Ele faz a análise lendo uma certa quantidade de bytes do cabeçalho de um arquivo, às vezes em um processo de múltiplas etapas (se encontrar algum marcador claro no início). Em um arquivo de texto não estruturado ele certamente lerá mais do que o número de caracteres do seu arquivo estendido ./file, por isso analisa todos os caracteres.

No seu segundo exemplo você coloca alguns caracteres utf-8 em um arquivo e com base nisso fileirá concluir este arquivo usando o utf-8conjunto de caracteres. Se você tivesse, por exemplo, um arquivo de 900 KB com apenas caracteres ASCII e acrescentasse sua linha de eco 'utf-8', fileainda assim o reportaria como um arquivo codificado em ASCII, porque ele não leu até os caracteres codificados em utf-8.

O limite está em algum lugar perto de 100 KB

informação relacionada