無需任何命令即可將純文字檔案從 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

相關內容