Command-Line

more、cat 和 less 支持的字元編碼

  • June 10, 2013

我有一個根據以下編碼的文本文件file

ISO-8859 文本,帶有 CRLF 行終止符

此文件包含帶有重音符號的法語文本。我的 shell 能夠顯示重音,並且emacs在控制台模式下能夠正確顯示這些重音。

我的問題是more,工具無法正確顯示此文件。我猜這意味著這些工具不支持這個字元編碼集。這是真的?這些工具支持哪些字元編碼?cat``less

您的外殼可以顯示重音等,因為它可能使用 UTF-8。由於有問題的文件是不同的編碼,less more並且cat試圖將其讀取為 UTF 並失敗。您可以檢查您目前的編碼

echo $LANG

您有兩個選擇,您可以更改預設編碼,或將文件更改為 UTF-8。要更改編碼,請打開終端並鍵入

export LANG="fr_FR.ISO-8859"

例如:

$ echo $LANG 
en_US.UTF-8
$ cat foo.txt 
J'ai mal � la t�te, c'est chiant!
$ export LANG="fr_FR.ISO-8859"
$ xterm <-- open a new terminal 
$ cat foo.txt 
J'ai mal à la tête, c'est chiant!

如果您正在使用gnome-terminal或類似的,您可能需要啟動編碼,例如terminator右鍵點擊和:

在此處輸入圖像描述

對於gnome-terminal

在此處輸入圖像描述

您的另一個(更好)選擇是更改文件的編碼:

$ cat foo.txt 
J'ai mal � la t�te, c'est chiant!
$ iconv -f ISO-8859-1 -t UTF-8  foo.txt > bar.txt
$ cat bar.txt 
J'ai mal à la tête, c'est chiant!

引用自:https://unix.stackexchange.com/questions/78776