cygwin中中文输出与输出的处理



作者: libuse 出自: http://www.linuxdiyf.com
想了很多种措施要运转我的一个目次下的文件,可是怎样都不可,全部的路末了都锁在了怎样在cygwin下输出我的中文目次名?试了很多网上的措施终是不克不及成行,厥后在达人的辅导下,终于失路归返,真可谓路途是迂回的,出路是光亮的。

其真实cygwin下不克不及输出中文的缘故起因是中文字符的最高位都是1,以是被当作节制符措置了。ok,我们现看下怎样做,然后再看看为什么这么做。

怎样做:要是你的用户目次(/home/XXX)下有了: .inputrc , .bashrc/.bash-profile这两个或三个文件,那么恭喜你,你不用树立了,只需做删改就可以了。要是没有,那么贫穷坚苦你要树立这三个文件。在Linux下,我们有多种树立文件的措施,可是要是你没有在cygwin下装有vi等编纂器,那么您可以按如下提供的方法树立这三个文件:

(1)从/ect/skel中将这三个文件拷贝到你的用户主目次下。

(2)运用notepad来树立这三个文件,可是很主要的一点是,请您在保存时必定要存成ANSI编码的.txt文件,这一点请必定要记住。

ok,文件如今是树立了,那么就剩下怎样删改文件了:(请按ANSI编码花样编写)

(1)请在.inputrc文件中添加:

set meta-flag on

set convert-meta off

set output-meta on

set input-meta on

set completion-ignore-case on 

(2)请在.bashrc 或.bash-profile文件中添加:

alias ls='ls --show-control-chars --color=auto'

export LESSCHARSET=latin1

删改后请保存成ANSI编码的花样。

ok,前功尽弃了。

如今就看看为什么要这么做,cygwin下不克不及输出中文的缘故起因是中文字符的最高位都是1,以是被当作节制符措置了,meta-flag,convert-meta等选项的意思可以参考man bash。复杂的说,设置meta-flag on允许从终端输出中文,不然的话终端会过滤失踪每个字节的最高位;convert-meta off是设置不将中文字符转化为转义序列,由于中文是两个字节默示的,第一字节的最高位是1扫尾的,可以能同于某个转义字符;output-meta on便是允许向终端直接输出中文;input-meta on便是允许向终端直接输出中文;set completion-ignore-case on这个可以在 echo A的时分按了后就能由readline给你补出来abc.txt;–show-control-chars也一样。




版权声明: 原创作品,允许转载,转载时请务必以超链接情势标明文章 原始出处 、作者信息和本声明。不然将穷究功令责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1973801.html