您的位置:首页 > 其它

SecureCRT中文显示乱码的解决方法

2013-05-16 13:37 429 查看
操作步骤

以下两步:

1.远程linux机器也就是Locale环境。修改环境变量LANG。例如在~/.bash_profile里面添加

export LANG=zh_CN.UTF8
export LC_ALL=zh_CN.UTF8

重新登录之后生效。

现在查看一下当前设置:

myname@myhost~> locale

LANG=zh_CN.UTF8

LC_CTYPE="zh_CN.UTF8"

LC_NUMERIC="zh_CN.UTF8"

LC_TIME="zh_CN.UTF8"

LC_COLLATE="zh_CN.UTF8"

LC_MONETARY="zh_CN.UTF8"

LC_MESSAGES="zh_CN.UTF8"

LC_PAPER="zh_CN.UTF8"

LC_NAME="zh_CN.UTF8"

LC_ADDRESS="zh_CN.UTF8"

LC_TELEPHONE="zh_CN.UTF8"

LC_MEASUREMENT="zh_CN.UTF8"

LC_IDENTIFICATION="zh_CN.UTF8"

LC_ALL=

myname@myhost~>

2.本地windows机器,SecureCRT的设置。修改SecureCRT的设置。找到“选项”->“会话选项”->“外观”:

*    字符编码设置为utf-8。

*    字体设置,选择中文字体,例如新宋体。

设置完成。然后测试一下。

基本原理

首先,同一种语言,可以使用不同的编码。例如,中文windows的系统默认字符集是cp936,基本上等同gbk。参考 http://zh.wikipedia.org/wiki/GBK

例如有两个文件。文件名分别为“我的分析1.txt”和“我的分析2.txt”。但是文件名(不是文件内容)的编码格式不同。

“我的分析1.txt”的UTF-8编码为

01.e68891 e79a84 e58886 e69e90 31 2e 74 78 74 

02.  我       的     分      析  1  .  t  x  t 

e68891 e79a84 e58886 e69e90 31 2e 74 78 74

  我       的     分      析  1  .  t  x  t

   "我的分析2.txt"的gb2312(是gbk的一个真子集)编码格式为

01.ced2 b5c4 b7d6 cef6 32 2e 74 78 74 

02.我    的    分   析   2  .  t  x  t 

ced2 b5c4 b7d6 cef6 32 2e 74 78 74

我    的    分   析   2  .  t  x  t

第二,linux shell环境下,环境变量LANG决定了本地使用的字符集(通常情况,不考虑LC_ALL等)。包括文件名和文件内容的处理。例如,由于编码不同,运行ls命令时,上面的两个文件名不能同时正确显示。

在实际linux系统中,不应该如此灵活,而要固定一种文件名编码格式。例如,linux一般默认使用utf-8编码文件名。以下三种情况:

   1> LANG=zh_CN.UTF8,设置shell程序使用UTF8编码处理字符。因此,

     “我的分析1.txt”能够被正确处理,因为是UTF-8编码。

     “我的分析2.txt”是gb2312编码,显示为乱码。

   2> LANG=zh_CN.gb2312 或者 LANG=zh_CN.gb18030,那么

    “我的分析1.txt”显示为乱码。

    “我的分析2.txt”能够正确处理。

   3> LANG=en,那么ls查看,两个文件名都不能正常显示。

3.文件比机器Vim的字符编码设置。编辑~/.vimrc,添加下面两行

[plain] view plaincopyprint?

01.let &termencoding=&encoding  

02.set fileencodings=utf-8,ucs-bom,gbk 

let &termencoding=&encoding

set fileencodings=ucs-bom,utf-8,gbk这样设置之后,utf-8和gb2312都能正确处理。
注意:fileencodings的编码和顺序有关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: