中文檔名變亂碼

wget 中文檔名變亂碼
中文檔名在平常的情況下會被編碼, 但是在 --cut-dirs 時又是正常的, 那就大家用 --cut-dirs, 或是使用 outta-port/wget 吧

wget -r -np -nH --cut-dirs=3 ftp://freebsd.sinica.edu.tw/pub/statue/test/
測試.txt
wget -r -np -nH -nd ftp://freebsd.sinica.edu.tw/pub/statue/test/
%B4%FA%B8%D5.txt
wget "ftp://freebsd.sinica.edu.tw/pub/statue/test/*"
%B4%FA%B8%D5.txt

wget 的安裝:
# cd /usr/ports/outta-port/wget
# make install clean
From:FreeBSD Chinese HOWTO
由於不知名的原因,可能是為了避開特殊檔名, wget 會自動將抓取檔名的部分用 encode_string 處理過, 所以該 patch 就把被 encode_string 處理成 "%3A" 這種東西, 用 decode_string 還原成 ":", 並套用在目錄與檔案名稱的部分,decode_string 是 wget 內建的函式。
pure-ftpd 的中文問題?
Contributed by: leeym.bbs@bbs.leeym.com (Yen-Ming Lee)
可能是 client 的問題 (例如 ncftp 就會吃掉 ), 也可能是 server 的問題. 如果確定 client 沒問題的話, server (pure-ftpd) 要改的部分為:

--- src/ftpd.c.orig     Tue Feb 10 23:29:48 2004
+++ src/ftpd.c  Tue Feb 10 23:30:34 2004
@@ -660,9 +660,11 @@
return -1;
}
while (*namepnt != 0) {
+#if 0
if (ISCTRLCODE(*namepnt) || *namepnt == '') {
return -1;
}
+#endif
if (dot_ok == 0) {
if (*namepnt == '/') {
namepnt++;
Please follow and like us:

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *