操作步驟
下面兩步:
遠程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_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~> 本地windows機器。改動SecureCRT的設置。找到“選項”->“會話選項”->“外觀”:
*??? 字符編碼設置為utf-8。
*??? 字體設置,選擇中文字體,比如新宋體。設置完畢。然后測試一下。
基本原理
首先,同一種語言,可以使用不同的編碼。比如,中文windows的系統默認字符集是cp936,基本上等同gbk。參考? http://zh.wikipedia.org/wiki/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查看,兩個文件名稱都不能正常顯示。
第三,SecureCRTclient的編碼設置要與遠程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都能正確處理。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
