首页 > 代码库 > Cygwin下使用rsync备份至Linux server时的中文编码问题
Cygwin下使用rsync备份至Linux server时的中文编码问题
14年6月10日 今天在备份数据又出了状况:所有文件名中含有非英文字符的文件都被从Linux server上删除,而当要重新拷贝Windows下该文件时,则显示错误:
invalid or incomplete multibyte or wide character
看来是文件名编码出了问题。在Cygwin下查看locale,被设置成了zh_CN.GBK@cjknarrow。而原先设置的是什么也不记得了,但肯定是设置系统locale为Chinese又切换到English造成的。同时发现,date命令输出的日期格式也都变成中文的了。最后没有办法,只得通过Samba来同步文件了。
此外,注意到在Linux系统上,locale为en_US.UTF-8,但也可以正常显示和输入中文。
[14/6/15] 最终发现问题出在了Cygwin自身的locale设置上。在标题栏上点右键选择“Options”,则可出现设置对话框。
之前不知什么时候,将Cygwin terminal的locale设成了zh_CN.GBK,从而导致同步文件到Home PC(locale为en_US.UTF-8)时,所有远程的中文文件名均不能被识别。而若在命令行下使用命令export LC_ALL=en_US.UTF-8强制设置locale,则又会导致本地的中文文件名不能被识别。只有在上述的对话框中将locale设为en_US.UTF-8才可以。同时需要注意的是,Windows系统自身的locale,即对于非UTF-8编码的处理,应选择为Simplified Chinese,如下图所示(位于Region and Language => Administrative => Language for non-Unicode programs)。