Cygwin的中文檔名顯示和中文輸入問題的解決辦法
cygwin下不能輸入中文的原因是中文字元的最高位都是1,所以被當作控制符處理了,meta-flag,convert-meta等選項的意思可以參考man
bash。簡單的說,設定meta-flag
on允許從終端輸入中文,否則的話終端會過濾掉每個位元組的最高位;convert-meta
off是設定不將中文字元轉化為轉義序列,因為中文是兩個位元組表示的,第一位元組的最高位是1開頭的,可以能同於某個轉義字元;output-meta
on就是允許向終端直接輸出中文;input-meta
on就是允許向終端直接輸入中文;set
completion-ignore-case on這個可以在
下面就說說怎樣做:
無論是顯示中文檔名,還是輸入中文,都必須設定Cygwin啟動程式的選項中的“當前內碼表”為簡體中文。在簡體中文的Windows系統中,Cygwin的“當前內碼表”設定,預設的就是簡體中文。
1、右鍵cgywin視窗,單機options選項,Text選項,locale標籤選擇C(當前內碼表),Character set標籤選擇GBK,單機ok。
2、修改檔案
顯示中文檔名
在Cygwin中用ls命令列出目錄中的檔案,如果是中文檔名,則顯示為一串問號。
解決辦法:
使用 ls 命令的 --show-control-chars 選項。為了方便使用,可以在 ~/.bash_profile 檔案中設定一個ls命令的別名,即增加下面的一行語句
alias ls='ls --show-control-chars'
這樣,以後使用ls命令時,就會自動增加 --show-control-chars 選項,正確顯示出中文檔名。
輸入中文
在Cygwin中,可以用ctrl+space 快捷件調出Windows的中文輸入法,但無法把中文輸入進去。
解決辦法:
編輯 ~/.inputrc 檔案,把
# Allow 8-bit input/output
行後面的四行語句
#set meta-flag on
#set convert-meta off
#set input-meta on
#set output-meta on
前面的註釋符去調,即改為:
# Allow 8-bit input/output
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on
同時加上一句
set completion-ignore-case on
這樣昨晚就應該大功告成了。。。。。下圖是前後設定對比圖,沒設定之前中文顯示為亂碼,設定後就可以顯示也可以輸入。。