設定 Subversion 存取權限時若有中文名稱需注意文件編碼

安裝 Subversion 到 Windows 平台可參考這篇文章,但是在設定 Subversion 存取權限時卻需要注意關於中文目錄名稱的問題,我最近在設定 Subversion 存取權限時就遇到一個用中文命名的目錄怎樣都無法設定成功,所有被賦予這個目錄權限的人都無法存取,永遠都會回應 403 Forbidden 的錯誤訊息(如下):

Server sent unexpected return value (403 Forbidden) in response to OPTIONS 
request for 'https://example.com/repos/project1/trunk'

我也去查詢 Apache 的 error log 發現這樣的訊息:

Access denied: 'username' GET project1:/trunk/\xe4\xb8\xad\xe6\x96\x87\xe7\x9b\xae\xe9\x8c\x84

我再去看 authz.ini 設定:

[project1:/trunk/中文目錄]
@dev-team=rw
username=rw

然後我再試著將中文改成 UrlEncode 與 Hex 的格式,卻還是都不行:

[project1:/trunk/中文目錄]
@dev-team=rw
username=rw
[project1:/trunk/\xe4\xb8\xad\xe6\x96\x87\xe7\x9b\xae\xe9\x8c\x84]
@dev-team=rw
username=rw
[project1:/trunk/%e4%b8%ad%e6%96%87%e7%9b%ae%e9%8c%84]
@dev-team=rw
username=rw

分析至此,我直覺的認為應該是 Unicode 的問題了,然後我就將此檔改成 UTF-8 ( 含 BOM 字元 ),改完後卻更慘,從 Apache error log 中查到 "Section header expected" 的錯誤:

Failed to load the AuthzSVNAccessFile: D:\\SVNRepository\\authz.ini:1: Section header expected
Access denied: 'username' GET project1:/trunk

又試了一會兒原本要放棄了,但多堅持個 20 分鐘終於被我試出來,原來只要將檔案格式改成 UTF-8 without BOM 即可,如果你用 Notepad++ 可以參考以下圖示修改 authz.ini 檔案的編碼:

Notepad++: 編譯成 UTF-8(檔首無 BOM)

改完存檔之後就一切正常了,以後可以放心的在 Subversion 中使用中文命名了。

  

此文章由 will 發表於 2009/1/7 下午 12:28:36

永久連結 | 評論 (6) | 此文章的RSSRSS comment feed |

分類: Subversion

標籤: ,

收藏:

相關文章

評論

一月 7. 2009 23:39

demo

很多時候就是撐過去就有答案了,可是太多人往往放棄的太早

demo tw

一月 8. 2009 08:53

Allen Kuo

請問檔首無BOM是否與vs.net存檔時"utf-8無簽章"是相同的?

Allen Kuo tw

一月 8. 2009 09:55

努力成為保險業務員中,可能比賣雞排好一點

用Notepad 編輯svn 的權限存取清單就會發生這個慘劇,在utf-8的作業系統上,
本來都沒事,一移到windows上,整個subversion就掛了,中文專案全部不能用,
建議不要用"編譯成 utf-8",用圖說的下面另一個選項"轉換至 utf-8",
不然整個存取清單的中文都要重打,當然,要轉換至無BOM 的格式,
至於啥是BOM,可以看看此人的部落格,說明的很詳細,
http://blog.roodo.com/jaceju/archives/1100799.html

順帶一問,有沒有辦法把Notepad 移除掉啊?
還是應該建議公司用 utf-8 的作業系統呢?
apache上的程式都要考慮BIG5的問題了。

努力成為保險業務員中,可能比賣雞排好一點 tw

一月 8. 2009 09:59

努力成為保險業務員中,可能比賣雞排好一點

抱歉!
我說的Notepad是指微軟的記事本,
這東東能移除嗎?

努力成為保險業務員中,可能比賣雞排好一點 tw

一月 8. 2009 20:50

will

請問檔首無BOM是否與vs.net存檔時"utf-8無簽章"是相同的?
Ans: 是的。他指的簽章就是 BOM ,有興趣研究可參考以下網址:
http://en.wikipedia.org/wiki/Byte_Order_Mark

will tw

一月 8. 2009 20:53

will

順帶一問,有沒有辦法把Notepad 移除掉啊?
Ans: 可以,但何必呢?他很無辜耶!

還是應該建議公司用 utf-8 的作業系統呢?
Ans: 現在的 OS 全部都是 UTF-8 的作業系統了,難道你用的是 Win98 ?

apache上的程式都要考慮BIG5的問題了。
Ans: 沒錯。

will tw

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

七月 4. 2009 21:06