我有一个记录如下的文件:
CENTURY®KETTLEBELLS
COLEMANTT40°BAG
AlphaPro2¾TDLE
Lot™Stretch
M6×30
它通常在记事本文件中显示,但在终端中,当我捕获它时,它显示:
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
答案1
您使用的是 ISO-8859 语言环境,而文件是 UTF-8。
我的建议是为您的系统生成相应的 UTF-8 语言环境,并(永久)使用它而不是当前的语言环境。
不幸的是,您没有告诉我们您的操作系统或 Linux 发行版,因此以下是如何在 Debian 类型系统中配置区域设置
dpkg-reconfigure locales
作为 root,选择en_US
包含 UTF-8 的版本。如果是您的系统,请将其设为默认值