l 使用CVS中的常见故障
Ø 现象: 作者:龙××(longhaiwang@×××.cn) 王××(zbwangjian@×××.cn)
在ubuntu上的terminal中使用cvs时看到的中文文件名是乱码? |
原因:
1. CVS根本不会以任何方式转换文件和目录名称的字符集(也不会转换文件中的字符的字符集)。您提交文件时文件名具有的字符集即是任何其他人将其签出时看到的字符集。如果他们使用的字符集与您使用的字符集不同,则名称将显示为乱码。
2. 注意,文件名的字符集和文件中的字符的字符集是可以不同的。
3. 在windows上以默认gb2312字符集提交到cvs的文件,在ubuntu上签出时,如果使用ubuntu默认的utf-8字符集,因为字符集不同,显示的文件名将是乱码。
解决:
1. 中文乱码基本都是字符集的问题,特别是中文,如果出现有些情况中文正常而有些不正常不外乎GBK(GB18030gb2312)、UTF-8之间的转化。
2. 此次遇到的CVS中文文件名checkout乱码,主要是由于本身系统环境设置的问题,改成GBK就一切正常,但是还是要细心,因为有可能多处涉及到字符集的问题,例如在terminal下,一是要保证自身是GBK的,此外就是系统环境是GBK,这样基本是可以的。
3. cvs一般会用在IDE集成插件(例如eclipse),cvs客户端,cvs命令模式。这里需要注意的是,尽量在统一的环境下操作。例如我犯的错误,在ubuntu的gnome桌面下打开terminal进行CVS操作,尽管解决了在terminal显示上中文名正常,但是却切换到桌面去打开文件,文件名还是乱码,问题出在,terminal配置只是临时改变字符集,关掉后,打开新的terminal字符集还是会变回去,而且关键在于改变并不能影响系统,必须改变系统配置文件才行,桌面的乱码是因为系统的全局字符集变量没有改变。所以这时可以在terminal操作打开文件,这样就能保证中文正常。
4. 如果是用eclipse,可以用它集成的cvs来checkout中文文件,checkout前设置字符集为GBK。
5. 如果是用ssh,比如putty,在保证ssh软件自身的编码一致的情况下,用export LANG=GBK 方式设置字符系统变量,就能保证中文正常,或,在执行cvs checkout命令后,用iconv命令将GBK文件名转码为UTF-8能正确显示,在执行cvs commit命令前,用iconv命令将UTF-8文件名转码为GBK,也是可以的,就是麻烦点。
6. 在不得以的情况下改变系统配置文件中的字符集设置,重启也是可行的。
7. 注意事项:改变字符集后一定要检查是否改变成功,CVS即使checkout中文乱码,但是只限于文件名,文件是正常的,只是文件名可能后缀都乱了,那就需要手动改名字了。