Cat
當我 cat 非文本文件時會發生什麼?
當我在一個不只是文本的文件上執行 cat 時,它會返回大量字元(其中許多看起來像這樣 ��)。這是什麼數據?
非文本文件中的許多數據不能使用任何可用字元集中的字元來表示。當此數據由 cat 處理並顯示在螢幕上時,它會顯示為 �� 或其他無意義的字元,因為沒有其他方式可以顯示它們。
實際上 � 不是一個“無意義的角色”。那就是 Unicode替換字元。當嘗試顯示不是合法 UTF-8 程式碼的字節時,它會顯示在使用 UTF-8 編碼的終端中。當終端可用的字型不提供特定的合法Unicode 值時,它可能會顯示(但不太可能) ,但在這種情況下更有可能顯示空白。
通常,程式碼 32-126(US-ASCII,POSIX 可移植字元集)是可列印的。程式碼 160-255 可以 ISO-8859-1 編碼列印,但不能作為 UTF-8 列印,因為它們是構成 UTF-8 編碼的 Unicode 值的兩個或多個字節之一。同樣,程式碼 128-159 是 ISO-8859-1(和非列印)中的控製字元,但在 UTF-8 中,這些是兩個或多個字節之一,等等。
如果您
cat
是非文本文件,它可能包含 128-255 範圍內的字節,這些字節不太可能形成合法的 UTF-8 值。所以你會看到�。進一步閱讀: