最近的Ubuntu10.04桌面执行了自动更新之后,终端窗口的编码好像有点问题。
其中一个问题是,我用ssh连接到开发机(Fedora5+GB2312编码),执行svnup出错:
svn: Can't convert string from 'UTF-8' to native encoding:
svn: datacenter/hook/?/229?/143?/130?/232?/128?/131?/232?/181?/132?/230?/150?/153
过去是正常的,不知道为什么出错。
解决办法是:删除源代码,端口窗口的编码选择GBK,然后重新svn co就行了。
如果汉字显示为乱码,可以执行
LANG=en_US
即可显示为英文
但是再次执行svn up又不行了,最终,发现是文件名使用了中文造成,设置了编码后,文件系统中的文件名用的编码可能和环境不同就会造成类似问题。
'参考资料'四个汉字的GBK编码为:
B2 CE BF BC D7 CA C1 CF
UTF-8编码为:
E5 8F 82 E8 80 83 E8 B5 84 E6 96 99
再看svn的错误信息:
svn: datacenter/hook/?/229?/143?/130?/232?/128?/131?/232?/181?/132?/230?/150?/153
翻译成16进制是
E5 8F 82 E8 80 83 E8 B5 84 E6 96 99
说明这个文件夹在提交的时候使用的UTF-8编码,而系统环境设置的是GB2312,因此造成SVN对这个文件夹的处理出错。
因此,如果在Linux服务器上做开发等工作,建议最好还是使用默认的也是被支持最好的UTF-8编码,可以减少很多不必要的麻烦。
如果实在要改成其他编码,也最好规定使用制度,人为保证文件内容编码,中文文件名编码务必统一。