无需任何命令即可将纯文本文件从 ASCII 转换为 Unicode

无需任何命令即可将纯文本文件从 ASCII 转换为 Unicode

为什么 ASCII 编码文件扩展为 UTF-8 或相反缩减为 ASCII?

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

答案1

我认为您混淆了“编码”和“字符集”。

在第一种情况下,文件仅包含 US-ASCII 中的字符。这意味着无论您使用什么语言设置来显示文件,该文件看起来都一样。

在第二种情况下,文件现在包含属于 UTF8 字符集的字符,因为这就是您放入其中的内容。

这里没有发生转换;该命令只是告诉您文件的内容是什么。

答案2

file命令只是猜测您分析的文件中的内容。它通过从文件头读取一定数量的字节来进行分析,有时是在多个步骤过程中(如果它在开头找到一些清晰的标记)。在非结构化文本文件中,它读取的字符数肯定会多于扩展中的字符数./file,因此它会分析所有字符。

在第二个示例中,您将一些 utf-8 字符放入文件中,并基于此file将使用字符集结束该文件utf-8。例如,如果您有仅包含 ASCII 字符的 900Kb 文件并附加“utf-8”回显行,则file仍会将其报告为 ascii 编码文件,因为它没有读取到 utf-8 编码字符。

阈值接近 100Kb

相关内容