- 论坛徽章:
- 0
|
我刚看了这小伙的笔记,感觉Cygwin自己的包中的程序可以正确显示UTF-8字符,而我自己编译的程序就不行,可能是因为我用MinGW GCC编译原因,我下了个Cygwin的GCC 4,编译了同一份代码,果然如此!结果可以在cmd、Cygwin bash下正确显示UTF-8字符了。
总结:
MinGW带的RT库,比较native,会原封不动的将字符串数组传给console设备;而Cygwin带的RT库,在程序中要求的是UTF-8编码的字符串,但传给console设备前,会将它转换为native的ANSI编码——GBK,所以console可以最终显示正确的字符串。
Cygwin gcc果然比MinGW gcc更像Linux gcc!
所以最终会出现一个很有意思的现象:
我用一份代码,分别用MinGW gcc和Cygwin gcc编译,生成2个程序,prog1,prog2,执行
prog1 > out1.txt
prog2 > out2.txt
out1.txt 和 out2.txt 字节内容完全一样,都是UTF-8编码。但:
prog1(MinGW gcc编译的)在bash和cmd中显示结果错误,而prog2(Cygwin gcc编译的)显示结果正确。
我很奇怪,MinGW和Cygwin,它们的RT库,不都移植自GNU libc么,怎么还有这区别?
--------------
另外,2楼的同学,你说Cygwin不能使用中文,是指的什么情况下使用中文,我新下的Cygwin环境,默认安装、配置,中文支持很好啊,起码bash是这样的,ls、cat、echo、cd都行,bash下输入中文,也不需要特殊设置,Windows自己的输入法就可以,用搜狗拼音写个:echo "这是中文",很简单,也能显示,重定向到文件,就是按UTF-8保存的。
[ 本帖最后由 silon212 于 2010-1-20 18:35 编辑 ] |
|