很久没用svn命令,忽然发现:
C:\Documents and Settings\Administrator>svn list --non-interactive "file:///D:/u
sr/svn/repositories/demo/"
dir 2/
dir1/
?\230?\150?\176?\229?\187?\186?\230?\150?\135?\228?\187?\182?\229?\164?\185/
?\230?\150?\176?\229?\187?\186?\230?\150?\135?\228?\187?\182?\229?\164?\185 (2)/
C:\Documents and Settings\Administrator>
返回的内容竟然是乱码,正确的应该是:
dir 2/
dir1/
新建文件夹
新建文件夹 (2)
安装最新版本的svn: 1.4.5 ,重启Windows,问题还是存在。
在网上找了很久,最后,在http://www.etng.net/blog/2006/09/26/subversion-14%e7%89%88%e6%9c%ac%e7%9a%84windows%e6%9c%8d%e5%8a%a1%e9%85%8d%e7%bd%ae%e6%96%b9%e6%b3%95/ 找到了解决方法,文章说,设置Windows系统环境变量:
LANG=zh_CN.UTF8
APR_ICONV_PATH=C:\Program Files\Subversion\iconv
SVN_EDITOR=notepad.exe
就可以解决。设置方法:对“我的电脑”按右键,选择“属性”,选择“高级”栏,单击“环境变量”,检查“系统变量”列表是否有上述3个参数,如果有则进行修改,如果没有,则进行添加;修改完后,按多次“确定”。 此时,系统环境变量已经生效,再打开命令提示符,执行命令:
Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>"C:\Program Files\Subversion\bin\svn.exe " list file:///D:/usr/svn/repositories/demo dir 2/ dir1/ 新建文件夹/ 新建文件夹 (2)/
C:\Documents and Settings\Administrator>
|
中文显示正常了。
至于是否可以设置 LANG=zh_CN.GBK 或者 zh_CN.GB2312 或者 zh_CN.GB13000 等,我尝试了各种取值,似乎不影响svn的输出结果。
APR_ICONV_PATH的设置应该是关键所在,因为iconv目录保存了各种编码的转换配置文件。按我的猜想:有了这些配置文件,就可以实现从Unicode与本地编码的转换,从而实现任意编码之间的转换。不知道猜得对不对?经过测试,如果APR_ICONV_PATH没有配置,则可能导致乱码,如果APR_ICONV_PATH配置错误,则很可能导致乱码。当APR_ICONV_PATH配置正确时,总能正确显示中文路径,因此,应正确配置APR_ICONV_PATH。
至于,SVN_EDITOR=notepad.exe,的配置,似乎没使用用处。
如果是在DOS批处理中,可以使用:
set LANG=zh_CN.UTF8
set APR_ICONV_PATH=C:\Program Files\Subversion\iconv
set SVN_EDITOR=notepad.exe
来设置环境变量,确保svn命令需要的环境变量配置正确。