解決SecureCRT中文顯示亂碼

2021-07-12 03:02:42 字數 2132 閱讀 8615

securecrt是乙個非常優秀的終端登入工具,可以以telnet ,ssh,串列埠多種方式從終端登入伺服器,並且可以非常方便的進行複製和貼上。但近日用crt登陸rhel中文作業系統,凡是中文字元都顯示為亂碼。鬱悶許久,終於解決。

操作步驟

以下兩步:

遠端linux機器。修改環境變數lang。例如在~/.bash_profile裡面新增

export lang=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_*****="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~>

本地windows機器。修改securecrt的設定。找到「選項」->「會話選項」->「外觀」:

*    字元編碼設定為utf-8。

*    字型設定,選擇中文字型,例如新宋體。

設定完成。然後測試一下。

基本原理

首先,同一種語言,可以使用不同的編碼。例如,中文windows的系統預設字符集是cp936,基本上等同gbk。參考 。

例如有兩個檔案。檔名分別為「我的分析1.txt」和「我的分析2.txt」。但是檔名(不是檔案內容)的編碼格式不同。

「我的分析1.txt」的utf-8編碼為

e68891 e79a84 e58886 e69e90 31 2e 74 78 74

我      的    分      析  1  .  t  x  t

"我的分析2.txt"的gb2312(是gbk的乙個真子集)編碼格式為

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的編碼設定一致,才可以正確顯示字元。

補充說明

securecrt和遠端linux同時都使用gb2312編碼,也沒有問題。在這種情況下,字元都按照gb2312進行處理。但是,筆者在自己的windows上利用網路鄰居檢視遠端的linux samba server時,看到的gb2312中文檔名是亂碼。而用utf-8就沒有問題。儘管通過設定samba能夠解決,但還是建議統一用預設的utf8格式,比較保險。

vim正確顯示和輸入中文的設定。編輯~/.vimrc,新增下面兩行

let &termencoding=&encoding 

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

這樣設定之後,utf-8和gb2312都能正確處理。

解決SecureCRT中文顯示亂碼

以下兩步 遠端linux機器。修改環境變數lang。例如在 bash profile裡面新增 plain view plain copy export lang zh cn.utf8 重新登入之後生效。現在檢視一下當前設定 plain view plain copy myname myhost lo...

解決SecureCRT中文顯示亂碼

遠端linux機器。修改環境變數lang。例如在 bash profile裡面新增 plain view plain copy export lang zh cn.utf8 重新登入之後生效。現在檢視一下當前設定 plain view plain copy myname myhost locale ...

解決SecureCRT中文顯示亂碼

以下兩步 遠端linux機器。修改環境變數lang。例如在 bash profile裡面新增 plain view plain copy export lang zh cn.utf8 重新登入之後生效。現在檢視一下當前設定 plain view plain copy myname myhost lo...