Cygwin的中文文件名显示和中文输入问题的解决办法

来源:互联网 发布:卡宾淘宝旗舰店 编辑:程序博客网 时间:2024/06/11 22:56

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

这样昨晚就应该大功告成了。。。。。下图是前后设置对比图,没设置之前中文显示为乱码,设置后就可以显示也可以输入。。



0 0