1. 程式人生 > >Cygwin的中文檔名顯示和中文輸入問題的解決辦法

Cygwin的中文檔名顯示和中文輸入問題的解決辦法

cygwin下不能輸入中文的原因是中文字元的最高位都是1,所以被當作控制符處理了,meta-flagconvert-meta等選項的意思可以參考man bash。簡單的說,設定meta-flag on允許從終端輸入中文,否則的話終端會過濾掉每個位元組的最高位;convert-meta off是設定不將中文字元轉化為轉義序列,因為中文是兩個位元組表示的,第一位元組的最高位是1開頭的,可以能同於某個轉義字元;output-meta on就是允許向終端直接輸出中文;input-meta on就是允許向終端直接輸入中文;set completion-ignore-case on這個可以在

 echo A的時候按了<TAB>後就能由readline給你補出來abc.txt–show-control-chars也一樣。

下面就說說怎樣做:

無論是顯示中文檔名,還是輸入中文,都必須設定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

這樣昨晚就應該大功告成了。。。。。下圖是前後設定對比圖,沒設定之前中文顯示為亂碼,設定後就可以顯示也可以輸入。。