我有一个包含中文字符的unicode文件。我有它的本地副本和远程副本。
当我less
在本地文件上使用时,字符显示正确:
奥尔德林
但是,当我ssh
到远程机器并查看同一文件的远程版本时,字符却显示如下:
<E5><A5><A5><E5><B0><94><E5><BE><B7><E6><9E><97>
如何正确查看远程unicode文件(通过连接时ssh
)?
(我使用 Mac OS 上的标准终端应用程序。)
答案1
cat
如果使用它(或用来head
缩短输出),文件是否能正确显示?
less
我认为正确显示文件的关键在于正确LANG
设置LC_ALL
。在本地系统和远程系统上比较这些变量的值,看看它们是否不同,以及更改远程变量以匹配是否会产生影响。
来自less
手册页(请注意最后一句话):
如果未设置 LESSCHARSET 或 LESSCHARDEF,但任何字符串 在 LC_ALL、LC_TYPE 或 LANG 环境变量,则默认字符集为 utf-8。 如果未找到该字符串,但您的系统支持 setlocale 界面上,less会使用setlocale来确定字符集。 setlocale 通过设置 LANG 或 LC_CTYPE 环境进行控制 变量。 最后,如果 setlocale 接口也不可用,则默认 字符集是latin1。 控制字符和二进制字符以突出显示(反向 视频)。如果可能的话,每个这样的字符都以插入符号显示 (例如 ^A 表示 control-A)。插入符号仅用于反转 0100 位表示正常可打印字符。否则,字符 acter 显示为尖括号中的十六进制数。