1. 程式人生 > >如何讓 cygwin終端中顯示的中文改成英文

如何讓 cygwin終端中顯示的中文改成英文

轉:http://blog.csdn.net/semilog/article/details/7870591

最新在用cygwin windows 下編譯u-boot,下了最新版的cygwin 1.7.15-1,結果裡面的有些提示顯示的是中文,如下圖:


這讓我感覺怪怪的,上網找方法,結果無果而終,因為之前裝的 cygwin 1.7.9-1顯示的是英文,沒有出現這個現象,所以對比兩個 cygwin etc裡面的檔案,結果發現在這個檔案( Cygwin/etc/profile.d/lang.sh)裡不一樣:

Cygwin 1.7.15-1

test -z "${LC_ALL:-${LC_CTYPE:-$LANG}}" && export LANG=$(/usr/bin/locale -uU)

Cygwin 1.7.9-1

test -z "${LC_ALL:-${LC_CTYPE:-$LANG}}" && export LANG=C.UTF-8

到這裡,那解決方法就很簡單了,把Cygwin 1.7.15-1 中的lang.sh檔案改成LANG=C.UTF-8問題解決,解決後後的圖


現在問題是解決了,那麼再來一下思維擴散吧,見如下兩個問題:

1. 除了改 lang.sh檔案,有沒有其他的方法把 cygwin 1.7.15-1中顯示的中文改成英文?

2. 能不能把 cygwin 1.7.9-1中顯示的英文改成中文?

呵呵,下面就一起看一下吧。

1.

 除了改 lang.sh檔案,有沒有其他的方法把 cygwin 1.7.15-1中顯示的中文改成英文?

只要看一下lang.sh檔案中對應的這句:

export LANG=C.UTF-8

bash指令碼中定義一個 LANG 的變數,值為 C.UTF-8

那麼,我們就可以在 cygwin.bat 中的bash --login –i 前一行加上一句:

set LANG=C.UTF-8

bash --login –i

即可解決問題。

2. 能不能把 cygwin 1.7.9-1中顯示的英文改成中文?

 對於這個問題,還是從那個語句出發

LANG=$(/usr/bin/locale -uU)

中的 /usr/bin/locale –uU 是什麼意思呢?在終端中輸入locale –uU,如下


嘿嘿,其實對於中文系統來說就是zh_CN.UTF-8cygwin做了一個智慧檢測。

那麼,我們把 cygwin 1.7.9-1中的lang.sh LANG=C.UTF-8改成LANG=$(/usr/bin/locale -uU)看看出現什麼結果。

我改了一下,結果出現下圖的結果:


會發現也出現了中文了,但同樣,如果在cygwin.bat中的話,那就不能寫成:

set LANG=$(/usr/bin/locale -uU)

而要寫成:

set LANG=zh_CN.UTF-8

基本上分析完了,但是還有一個遺留問題存在就是第二個問題,改成中文後,只有一部分出現了中文,如上圖,而下圖的 leaving directory等都沒有出現中文。