环境:Linux Dist: CentOS 4.3,locale: en_US.UTF-8, .vimrc: set fencs=gbk
目标:终端使用 less/more/grep 等命令正确显示 GBK 编码文件内容,vim 正确显示 GBK 编码文件汉字
症状:
1. 系统自带 gnome-terminal 在设置终端编码为 GBK 后,能达到目标。
2. 使用 xshell 在 windows 平台上设置终端编码为 default 时,ssh 登录到 CentOS,能达到目标。
3. 在 screen 命令窗口内,无论终端还是 vim, 中文均显示为乱码,无法达到目标。
解决办法:在 ~/.screenrc 中,添加下面两句:
defencoding GBK
encoding UTF-8 GBK
我的猜测是 xshell、gnome-terminal 等终端能够将自身编码传给系统,因此系统能够对输出自动进行转码。而 screen 属于终端中的终端,它自身的编码不是 GBK,导致传给系统以后没有对输出进行转码。设置 screen 的编码和转换规则后,就 OK 了。
defencoding UTF-8encoding UTF-8 UTF-8我的需要设置成这样。