※ 引述《Lavender (陽光盒子)》之銘言:
: ※ 引述《BigLittle (栗頭壞掉了)》之銘言:
: : 是serv-u的鳥問題嗎?
: : 「許」就看不到
: 這種問題有兩種, 一種是某個字元單純抓不到, 最好的例子就是"許"
: 另外一種問題是, 某個字放在最後就不行, 這是編碼的問題
: 只要在這個字後面隨便加個_之類的就解決了..
許、功等字會不行,跟字元抓不到沒有關係,是因為
escape 字元的關係。許、功等字裡面有一個 byte 是
'\' 字元,這個字元對大部分輸出輸入函式都是 escape 字元,
所以在存取到這個字元的時候,會把這個字元後一個 byte
當成控制碼,因此會掉兩個字元('\' 和後面一個 byte)。
以「許」為例,這個字的第二個 byte 就是 '\' 字元,因此
跟在「許」後面的字的第一個 byte 會被當成控制字元,
而「許」本身第二個 byte 則被當成 escape 字元,所以
處理上沒有特別注意的話,「許」無法正確顯示,跟在他
後面的字也會遭殃。
: 根據我實測的結果, "缺"這個字對Serv-u是不會造成問題的
: 建議學長, 重要的檔案還是用英文檔名吧, 以免發生某些人抓不到的情形..
: 使用CuteFTP程式的, 可以嘗試 Edit->Setting->Connection->Firewall 中
: 把PASV mode打勾
另外,基本上我不是用 Serv-U,而 FTP 的 PASV mode (Passive Mode)
跟這個沒有關係, passive mode 是用在你位於 firewall 後端的時候
用的。ftp 協定本身分成兩種類型連線,一種叫做 control connection,
一種叫做 data connection。平常我們連線 ftp server 的時候,是先建立
control connection,ftp control connection 的 default port 是 21,
就算有改掉,也會是固定的,但是一旦要進行檔案傳輸,就要 server
和 client 程式協調,建立 data connection,而 data connection
因為是協調之後動態建立的,所以 port 會不固定。在一般非 passive
mode 的狀況下,是由 ftp client 進行 listen 的動作,而由 server
進行 connect 的動作,但是因為 client 在 firewall 後端,server
的 connect 動作多半會被 firewall 擋下來,所以 ftp 協定裡面才
有 PASV 命令,讓兩者角色顛倒過來,在 PASV 命令啟動 passive mode
模式下,由 server 端 listen,改由 client 主動建立連線,這樣
就不會發生 firewall 阻擋 data connection 建立的狀況。這個東西
基本上跟中文相容沒有關係。
至於為何「缺」這個字會存取發生錯誤,應該還是跟他自己用的
程式有關係,因為 server 端的記錄並沒有錯誤發生。
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.23.95