post by tommy @ 19 五月, 2006 00:02
看了一個 source code, 發現作者把 m_bUTF8 的變數改為內定是 true, 然後在伺服器不使用 UTF8 或偵測出不使用 UTF8 時, 再設定為 false. 然後在結束時再設為 false.
這樣子在第一次使用時, 並不會有問題, 但是如果斷線重連, 或者再連到另一個伺服器, 這個變數在上次連線結速時就被設定為 false, 而再連線並不會再產生一次這個物件, 是直接使用上次產生的物件, 結果... 這變數就永遠都不會被改為 true 了, 直到整個程式關閉再打開才會再改變.
--- FtpControlSocket.old.cpp Thu May 18 22:31:56 2006
+++ FtpControlSocket.cpp Thu May 18 22:30:06 2006
@@ -205,6 +205,8 @@
m_bAnnouncesUTF8 = false;
if (server.nUTF8 == 2)
m_bUTF8 = false;
+ else
+ m_bUTF8 = true;
// Some sanity checks
if (m_pOwner->IsConnected())
上頭這個 patch, 可以修正這個問題.
可以到這兒抓這個 patch, 與使用這個 patch 加上 sftp UTF8 支援的版本:
http://www.teatime.com.tw/~tommy/mypatch/fz2223_utf8.patch
http://www.teatime.com.tw/~tommy/filezilla.zip
PS1: 2006/5/19 FileZilla 的作者今天接受這一個 patch 了, 下一版應該不會有這個問題了.
PS2: 2.2.23a 應該已經修正這個問題了.