我有一个包含中文字符的Unicode文件。 我有一个本地和远程副本。
当我在本地文件上使用less的字符显示正确:
奥尔德林
但是,当我ssh到远程机器,并查看相同的文件的远程版本的字符只是这样显示:
<E5><A5><A5><E5><B0><94><E5><BE><B7><E6><9E><97>
如何正确查看远程unicode文件(通过ssh连接时)?
(我在Mac OS上使用标准的terminal应用程序。)
文件是否显示正确,如果你cat (或用head缩短输出)?
我认为正确显示文件的关键在于设置LANG或LC_ALL 。 在您的本地系统和远程系统比较这些variables的值,看看它们是否不同,以及是否改变远程一个匹配有所作为。
从less人页面(注意最后一句):
如果LESSCHARSET和LESSCHARDEF都没有被设置,但是任何string
在LC_ALL,LC_TYPE或者LC_ALL中find“UTF-8”,“UTF8”,“utf-8”或“utf8”
LANG环境variables,那么默认的字符集是utf-8。
如果没有find该string,但是您的系统支持setlocale
界面,less用setlocale来确定字符集。
通过设置LANG或LC_CTYPE环境来控制setlocale
variables。
最后,如果setlocale接口也不可用,则默认
字符集是latin1。
控制和二进制字符以突出显示(反向
video)。 如果可能的话,每个这样的字符都以插入符号表示
(例如,对于对照A,^ A)。 插入符号仅用于反转
0100位导致正常的可打印字符。 否则,char-
acter在尖括号中显示为hex数字。