很久沒用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命令需要的環境變量配置正確。