Shell-Script

文件有很多特殊字元。如何更換?

  • March 22, 2021

我有一個記錄如下的文件:

CENTURY®KETTLEBELLS
COLEMANTT40°BAG
AlphaPro2¾TDLE
Lot™Stretch
M6×30

它在記事本文件中正常顯示,但在我 cat 時在終端中顯示:

CENTURY▒KETTLEBELL
AlphaPro2▒TDLE
Lot▒Stretch
M6▒30

有沒有辦法來解決這個問題?我必須比較兩個具有這些值的文件。由於▒,一切都顯示為不同。請幫忙

編輯:

這是文件編碼:

$ file FULL_ITM.txt
FULL_ITM].txt: ascii text
$

這是 locale 命令的輸出:

$ locale
LANG=en_US
LC_COLLATE="en_US"
LC_CTYPE="en_US"
LC_MONETARY="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_MESSAGES="en_US"
LC_ALL=

結果如下:

LC_ALL=C od -c FULL_ITM.txt
0000000    C   E   N   T   U   R   Y 302 256   K   E   T   T   L   E   B
0000020    E   L   L   S  \n   C   O   L   E   M   A   N   T   T   4   0
0000040  302 260   B   A   G  \n   A   l   p   h   a   P   r   o   2 302
0000060  276   T   D   L   E  \n   L   o   t 342 204 242   S   t   r   e
0000100    t   c   h  \n   M   6 303 227   3   0  \n
0000113

您使用的是 ISO-8859 語言環境,而文件是 UTF-8。

我的建議是為您的系統生成相應的 UTF-8 語言環境並(永久)使用它而不是您目前的語言環境。

不幸的是,您沒有告訴我們您的作業系統或 Linux 發行版,所以這裡是如何在 Debian 類型系統中配置語言環境

dpkg-reconfigure locales

作為 root,選擇en_US包含 UTF-8 的那個。如果它是您的系統,請將其設為預設值

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