博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决SecureCRT中文显示乱码
阅读量:4559 次
发布时间:2019-06-08

本文共 2293 字,大约阅读时间需要 7 分钟。

原文路径:

操作步骤

以下两步:

  1. 远程linux机器。修改环境变量LANG。例如在~/.bash_profile里面添加
    [plain]
    1. export LANG=zh_CN.UTF8 
    export LANG=zh_CN.UTF8
    重新登录之后生效。
    现在查看一下当前设置:
    [plain]
    1. myname@myhost~> locale 
    2. LANG=zh_CN.UTF8 
    3. LC_CTYPE="zh_CN.UTF8" 
    4. LC_NUMERIC="zh_CN.UTF8" 
    5. LC_TIME="zh_CN.UTF8" 
    6. LC_COLLATE="zh_CN.UTF8" 
    7. LC_MONETARY="zh_CN.UTF8" 
    8. LC_MESSAGES="zh_CN.UTF8" 
    9. LC_PAPER="zh_CN.UTF8" 
    10. LC_NAME="zh_CN.UTF8" 
    11. LC_ADDRESS="zh_CN.UTF8" 
    12. LC_TELEPHONE="zh_CN.UTF8" 
    13. LC_MEASUREMENT="zh_CN.UTF8" 
    14. LC_IDENTIFICATION="zh_CN.UTF8" 
    15. LC_ALL= 
    16. myname@myhost~> 
    myname@myhost~> localeLANG=zh_CN.UTF8LC_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的设置。找到“选项”->“会话选项”->“外观”:
    *    字符编码设置为utf-8。
    *    字体设置,选择中文字体,例如新宋体。

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

基本原理

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

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

[plain]
  1. e68891 e79a84 e58886 e69e90 31 2e 74 78 74 
  2.   我       的     分      析  1  .  t  x  t 
e68891 e79a84 e58886 e69e90 31 2e 74 78 74  我       的     分      析  1  .  t  x  t

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

[plain]
  1. ced2 b5c4 b7d6 cef6 32 2e 74 78 74 
  2. 我    的    分   析   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查看,两个文件名都不能正常显示。
第三,SecureCRT客户端的编码设置要与远程linux的编码设置一致,才可以正确显示字符。

补充说明

  1. SecureCRT和远程linux同时都使用gb2312编码,也没有问题。在这种情况下,字符都按照gb2312进行处理。但是,笔者在自己的windows上利用网络邻居查看远端的linux samba server时,看到的gb2312中文文件名是乱码。而用UTF-8就没有问题。尽管通过设置samba能够解决,但还是建议统一用默认的UTF8格式,比较保险。
  2. VIM正确显示和输入中文的设置。编辑~/.vimrc,添加下面两行
    [plain]
    1. let &termencoding=&encoding  
    2. set fileencodings=ucs-bom,utf-8,gbk 
    let &termencoding=&encoding set fileencodings=ucs-bom,utf-8,gbk
    这样设置之后,utf-8和gb2312都能正确处理。

 

转载于:https://www.cnblogs.com/chenjianhong/archive/2013/01/20/4144865.html

你可能感兴趣的文章
4嵌入式作业io
查看>>
IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7
查看>>
Cognos中新建SQLserver数据源的步骤
查看>>
HttpClient连接超时及读取超时
查看>>
SQL优化方法
查看>>
SEO必须掌握的高级搜索指令
查看>>
生产者消费者模型
查看>>
[转]高颜值、好用、易扩展的微信小程序 UI 库,Powered by 有赞
查看>>
[转]SQL Server如何启用xp_cmdshell组件
查看>>
[转]微擎应用笔记3--manifest.xml文件使用说明
查看>>
Codeforces 1000C Covered Points Count 【前缀和优化】
查看>>
python高效读取文件、文件改写
查看>>
gulp
查看>>
pgsql查询优化之模糊查询
查看>>
不变模式
查看>>
matlab去云雾
查看>>
500lines项目简介
查看>>
Asp.net core logging 日志
查看>>
BOM浏览器对象模型
查看>>
Jq 遍历each()方法
查看>>