转:http://blog.youkuaiyun.com/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-8,cygwin做了一个智能检测。
那么,我们把 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等都没有出现中文。