[分享] 打造 Unicode 的環境

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

文章chinson » 週二 3月 01, 2005 10:59 am



感恩!
FileZilla官方是否尚未將 Unicode 釋出?
網站上似乎還沒有看到
輕鬆式生活
================================
http://blog.chinson.idv.tw/
頭像
chinson
懵懂的國中生
懵懂的國中生
 
文章: 117
註冊時間: 週一 5月 17, 2004 7:18 pm
來自: 高雄市

文章Tetralet » 週二 3月 01, 2005 11:20 am

twu2 寫:今天再改了一下 gftp.

1. 如果 ftp server 使用 utf-8, 則不管 gftp 使用 big5 或 utf-8 都可以正常看到中文.
2. 如果 ftp server 使用 big5, 則在 remote_charsets 中有設定 big5 的話, 也可以正常看到中文.
3. 在指令的部份, dir 或 get 都可以輸入中文字當參數.
4. 不管 gftp 在什麼環境下執行, big5 or utf-8 or 其它, 所有 local 端的檔名, 都會使用 utf-8 處理.

也就是說, 如果你不是在 utf-8 的環境下頭的話, 最好不要用這個版本. 以免在 local 找不到 big5 的中文檔名, 抓回來的中文檔名也變成 utf-8 編碼.

我試過 gftp-text/gftp-gtk 兩個版本, 都可以正常使用. 只是有些傳送的訊息, 可能會出現 big5 碼, 會有轉碼失敗的錯誤訊息, 應該不會影響正常使用.

我想了想,
一點點小小的建議...

我們可以在任何的 Locale 下使用類似 LC_ALL=zh_TW.Big5 gftp 來啟動 gftp,
這樣子在瀏覽中文的 ftp 的網站時基本上是沒有問題的。

問題只有出在上、下傳檔案時,
因為在本機上我們用的全是 UTF-8 編碼的,
所以我們想讓 gftp 在期間能進行 UTF-8 <-> Big5 的轉換動作。

我是想,
我們可以設定一個 gftp 專用的 LC_CODE=zh_TW.UTF-8 之類的環境變數,
而 gftp 可以據此來進行轉碼的動作,
(即 LC_CTYPE <-> LC_CODE 間的轉換)
這樣子不管對使用者或是程式開發者而言,
問題應該會單純許多...

不知您覺得如何?
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

文章twu2 » 週二 3月 01, 2005 11:39 am

Tetralet 寫:請問是否只有 filezilla 的 patch 進入 cvs 中,
而 gftp 並沒有呢?


yes, gftp 的改法並不符合一般運作. 且我不想去解決那些訊息轉碼失敗的部份, 所以並沒有把 patch 給作者.

Tetralet 寫:
twu2 寫:還有一個小問題是在 unicode build 的版本上頭, 檔案列表還是會先由 utf-8 -> unicode -> ansi -> unicode. 可能有些多國語言的文字會轉失敗. 所以我今天早上給了作者另外一個小 patch 修正這個問題.

為什麼要轉換那麼多次呢?


因為我原本並沒有考慮 unicode 的版本. 所以都會轉成 ansi.
後來經作者提出之後, 才做這個更正.

但是, 原 patch 修改的部份並無法直接把收到的字串改成 unicode 使用. (因為那個變數仍是 char string, 非 wchar_t string)
所以第二次送去給作者的 patch, 會有這麼多次轉換.

今天給的 patch 把修改的部份換到原本程式在由 char string 複製到 wchar_t string 的地方再做 utf8 的轉換. 這時就可以先 utf-8 -> unicode, 然後再依 unicode 版本與否來決定是否由 unicode -> ansi.

這樣應該就不會轉錯了.

Tetralet 寫:請問,Unicode 的版本是不是用於 MS Windows 2000/XP/2003 下的;
而非 Unicode 的版本是不是用於 MS Windows 95/98/ME 下的呢?


一般的分法, 這樣子沒錯.
但是 MS 有給 Windows 9x 系列一個 Microsoft Layer for Unicode on Windows 95/98/Me Systems, 如果有裝這個, 應該也可以在 Windows 9x 下頭使用 unicode 的程式.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週二 3月 01, 2005 11:47 am

chinson 寫:FileZilla官方是否尚未將 Unicode 釋出?
網站上似乎還沒有看到


對, 我在網站上頭抓的那個安裝的 .exe 與 zip 裡頭的執行檔, 都是 ansi 版本.

我看 source 裡頭 vc++ build 的分類, 在 Release 那裡頭並沒有 unicode, 不過 Debug 就有分 ansi/unicode 兩個.
也許是 unicode 還不穩定吧. 至少有個 buffer overflow 的問題是我這次給的 patch 之後才修正的. 沒改這個之前, 真的很不穩定, 且也無法正常顯示非英文的 unicode 字串.

不過我這幾天都用 unicode 版本, 似乎已經很穩定了, 不確定作者在 2.2.12 版的時候會不會放出 unicode 版本.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週二 3月 01, 2005 12:00 pm

Tetralet 寫:我們可以在任何的 Locale 下使用類似 LC_ALL=zh_TW.Big5 gftp 來啟動 gftp,
這樣子在瀏覽中文的 ftp 的網站時基本上是沒有問題的。

問題只有出在上、下傳檔案時,
因為在本機上我們用的全是 UTF-8 編碼的,
所以我們想讓 gftp 在期間能進行 UTF-8 <-> Big5 的轉換動作。

我是想,
我們可以設定一個 gftp 專用的 LC_CODE=zh_TW.UTF-8 之類的環境變數,
而 gftp 可以據此來進行轉碼的動作,
(即 LC_CTYPE <-> LC_CODE 間的轉換)


其實, 如果本機用的全是 UTF-8, 則在 UTF-8 下頭直接使用這個 gftp, 然後在 remote_charsets 設定 big5, 則不管遠端是 UTF-8 或 big5, 都可以正常使用. (以我的 patch 版本來說)

至於沒 patch 的版本, 好像原本在兩方都是 Big5 下頭是正常的?

我原本考慮用 LC_CTYPE 的設定. 不過.... 後來沒打算把 patch 丟給 作者 (因為問題沒完全解決), 所以就不改了, 直接改用 UTF-8.... 因為我的需求就只有這樣.
最後由 twu2 於 週二 3月 01, 2005 2:52 pm 編輯,總共編輯了 1 次。
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章Tetralet » 週二 3月 01, 2005 12:51 pm

twu2 寫:我原本考慮用 LC_CTYPE 的設定. 不過.... 後來沒打送把 patch 丟給 作者 (因為問題沒完全解決), 所以就不改了, 直接改用 UTF-8.... 因為我的需求就只有這樣.

原來如此...

辛苦您了!:w_28:
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

文章twu2 » 週二 3月 01, 2005 5:16 pm

這幾天在試 UTF-8 的環境, 發現 WinSCP 雖然由 3.7.1 版之後, 開始支援 UTF-8 的 sftp, 但是.... 我發現 openssh 中的 sftp-server 仍然是 version 3 的 sftp, 並不符合 WinSCP 所要的 version 4 sftp.

試過改 openssh 中, 簡單的把這個數字由 3 換成 4... 不過, 似乎這中間的差異並不是只有 UTF-8 編碼的差別, 會造成 WinSCP 反而無法正常連線.

所以.... 只好把腦筋動到 WinSCP 本身上頭了. (這真是 OpenSource 的好處)

我加上一個 Force UTF-8 的選項, 如果這個選項設定為 On, 就會認為所連線的 sftp-server 使用 UTF-8 編碼.
在 Environment -> SFTP -> Force remote use UTF-8.

如果你有舊的 session, 最好重新設定一下再儲存一次. 因為我發現這個選項在載入舊的 session 時, 看起來是 On, 實際上... 好像是 Off (我也不確定...)
反正不管是那個... 請重新改一下再存一次, 以確定是使用 On 還是 Off. (Auto 也是 Off....)

另外順便改了一下顯示檔名的地方, 原本檔名有 \ 字元的會被忽略 (安全性修正?)
不過.... 中文檔名常出現 \ 在裡頭. 這個 WinSCP 用 BCB 開發的... 應該是不支援 unicode, 似乎無法改用 unicode 來避免.

patch 放 http://www.teatime.com.tw/~tommy/winscp ... utf8.patch

改過的執行檔放
http://www.teatime.com.tw/~tommy/WinSCP3.zip

代碼: 選擇全部
diff -Nur winscp.orig\core\SessionData.cpp winscp.patch\core\SessionData.cpp
--- winscp.orig\core\SessionData.cpp   Tue Feb 08 17:02:06 2005
+++ winscp.patch\core\SessionData.cpp   Tue Mar 01 16:12:34 2005
@@ -498,6 +498,7 @@
     READ_SFTP_BUG(Symlink);
     READ_SFTP_BUG(Utf);
     READ_SFTP_BUG(SignedTS);
+    READ_SFTP_BUG(ForceUtf);
     #undef READ_SFTP_BUG
 
     SFTPMaxVersion = Storage->ReadInteger("SFTPMaxVersion", SFTPMaxVersion);
@@ -673,6 +674,7 @@
       WRITE_SFTP_BUG(Symlink);
       WRITE_SFTP_BUG(Utf);
       WRITE_SFTP_BUG(SignedTS);
+      WRITE_SFTP_BUG(ForceUtf);
       #undef WRITE_SFTP_BUG
 
       WRITE_DATA(Integer, SFTPMaxVersion);
diff -Nur winscp.orig\core\SessionData.h winscp.patch\core\SessionData.h
--- winscp.orig\core\SessionData.h   Tue Feb 08 17:01:30 2005
+++ winscp.patch\core\SessionData.h   Tue Mar 01 16:11:48 2005
@@ -22,7 +22,7 @@
 enum TSshBug { sbIgnore1, sbPlainPW1, sbRSA1, sbHMAC2, sbDeriveKey2, sbRSAPad2,
   sbRekey2, sbPKSessID2 };
 #define BUG_COUNT (sbPKSessID2+1)
-enum TSftpBug { sbSymlink, sbUtf, sbSignedTS };
+enum TSftpBug { sbSymlink, sbUtf, sbSignedTS, sbForceUtf };
 #define SFTP_BUG_COUNT (sbSignedTS+1)
 enum TAutoSwitch { asOn, asOff, asAuto };
 enum TPingType { ptOff, ptNullPacket, ptDummyCommand };
diff -Nur winscp.orig\core\SftpFileSystem.cpp winscp.patch\core\SftpFileSystem.cpp
--- winscp.orig\core\SftpFileSystem.cpp   Wed Feb 09 09:41:30 2005
+++ winscp.patch\core\SftpFileSystem.cpp   Tue Mar 01 16:29:14 2005
@@ -292,7 +292,8 @@
 
   inline void AddPathString(const AnsiString Value, int Version, bool Utf)
   {
-    AddString(Value, (Version >= 4) && Utf);
+//    AddString(Value, (Version >= 4) && Utf);
+    AddString(Value, Utf);
   }
 
   void AddProperties(unsigned short * Rights, AnsiString * Owner,
@@ -458,7 +459,8 @@
 
   inline AnsiString GetPathString(int Version, bool Utf)
   {
-    return GetString((Version >= 4) && Utf);
+//    return GetString((Version >= 4) && Utf);
+    return GetString(Utf);
   }
 
   void GetFile(TRemoteFile * File, int Version, bool ConsiderDST, bool Utf, bool SignedTS)
@@ -1277,6 +1279,7 @@
   FAvoidBusy = false;
   FUtfStrings = false;
   FSignedTS = false;
+  FForceUtf = false;
   FSupport = new TSFTPSupport();
   FSupport->Extensions = new TStringList();
   FExtensions = new TStringList();
@@ -2242,23 +2245,32 @@
     }
   }
 
+  FForceUtf = (FTerminal->SessionData->SFTPBug[sbForceUtf] == asOn);
+
   if (FVersion >= 4)
   {
-    FUtfStrings = (FTerminal->SessionData->SFTPBug[sbUtf] == asOff) ||
-      ((FTerminal->SessionData->SFTPBug[sbUtf] == asAuto) &&
-        (FTerminal->SshImplementation.Pos("Foxit-WAC-Server") != 1));
-    if (FUtfStrings)
+    if (FForceUtf)
     {
-      FTerminal->LogEvent("We will use UTF-8 strings when appropriate");
+      FUtfStrings = true;
     }
     else
     {
-      FTerminal->LogEvent("We believe the server has SFTP UTF-8 bug");
+      FUtfStrings = (FTerminal->SessionData->SFTPBug[sbUtf] == asOff) ||
+      ((FTerminal->SessionData->SFTPBug[sbUtf] == asAuto) &&
+        (FTerminal->SshImplementation.Pos("Foxit-WAC-Server") != 1));
     }
   }
   else
   {
-    FUtfStrings = false;
+    FUtfStrings = FForceUtf;
+  }
+  if (FUtfStrings)
+  {
+    FTerminal->LogEvent("We will use UTF-8 strings when appropriate");
+  }
+  else
+  {
+    FTerminal->LogEvent("We believe the server has SFTP UTF-8 bug");
   }
 }
 //---------------------------------------------------------------------------
@@ -2442,7 +2454,8 @@
           File = LoadFile(&ListingPacket, NULL, "");
           // security fix
           if (((File->FileName.Length() > 2) && IsDots(File->FileName)) ||
-              (File->FileName.Pos("/") > 0) || (File->FileName.Pos("\\") > 0))
+              (File->FileName.Pos("/") > 0))
+//              (File->FileName.Pos("/") > 0) || (File->FileName.Pos("\\") > 0))
           {
             FTerminal->LogEvent(FORMAT("Ignored suspicious file '%s'", (File->FileName)));
             delete File;
diff -Nur winscp.orig\core\SftpFileSystem.h winscp.patch\core\SftpFileSystem.h
--- winscp.orig\core\SftpFileSystem.h   Wed Feb 09 09:40:30 2005
+++ winscp.patch\core\SftpFileSystem.h   Tue Mar 01 16:13:25 2005
@@ -76,6 +76,7 @@
   TSFTPSupport * FSupport;
   bool FUtfStrings;
   bool FSignedTS;
+  bool FForceUtf;
 
   void __fastcall CustomReadFile(const AnsiString FileName,
     TRemoteFile *& File, char Type, TRemoteFile * ALinkedByFile = NULL,
diff -Nur winscp.orig\forms\Login.cpp winscp.patch\forms\Login.cpp
--- winscp.orig\forms\Login.cpp   Wed Feb 09 21:35:02 2005
+++ winscp.patch\forms\Login.cpp   Tue Mar 01 16:21:30 2005
@@ -94,6 +94,7 @@
 
   InitializeBugsCombo(SFTPBugSymlinkCombo);
   InitializeBugsCombo(SFTPBugUtfCombo);
+  InitializeBugsCombo(SFTPBugForceUtfCombo);
 }
 //---------------------------------------------------------------------
 void __fastcall TLoginDialog::Init()
@@ -231,6 +232,7 @@
       if (SFTPBug ## BUG ## Combo->ItemIndex < 0) SFTPBug ## BUG ## Combo->ItemIndex = 0
     LOAD_SFTP_BUG_COMBO(Symlink);
     LOAD_SFTP_BUG_COMBO(Utf);
+    LOAD_SFTP_BUG_COMBO(ForceUtf);
     #undef LOAD_SFTP_BUG_COMBO
     
     // Authentication tab
@@ -495,6 +497,7 @@
   #define SAVE_SFTP_BUG_COMBO(BUG) aSessionData->SFTPBug[sb ## BUG] = (TAutoSwitch)(2 - SFTPBug ## BUG ## Combo->ItemIndex);
   SAVE_SFTP_BUG_COMBO(Symlink);
   SAVE_SFTP_BUG_COMBO(Utf);
+  SAVE_SFTP_BUG_COMBO(ForceUtf);
   #undef SAVE_SFTP_BUG_COMBO
 
   // Proxy tab
diff -Nur winscp.orig\forms\Login.dfm winscp.patch\forms\Login.dfm
--- winscp.orig\forms\Login.dfm   Wed Feb 09 23:40:12 2005
+++ winscp.patch\forms\Login.dfm   Tue Mar 01 16:33:28 2005
@@ -969,7 +969,7 @@
           Left = 0
           Top = 6
           Width = 345
-          Height = 70
+          Height = 100
           Anchors = [akLeft, akTop, akRight]
           Caption = 'Detection of known bugs in SFTP servers'
           TabOrder = 0
@@ -992,6 +992,14 @@
             Caption = 'Does not use &UTF-8 for SFTP4 and newer'
             FocusControl = SFTPBugUtfCombo
           end
+          object Label34: TLabel
+            Left = 12
+            Top = 68
+            Width = 115
+            Height = 13
+            Caption = 'Force remote use UTF-8'
+            FocusControl = SFTPBugForceUtfCombo
+          end
           object SFTPBugSymlinkCombo: TComboBox
             Left = 272
             Top = 15
@@ -1011,6 +1019,16 @@
             Anchors = [akLeft, akTop, akRight]
             ItemHeight = 0
             TabOrder = 1
+          end
+          object SFTPBugForceUtfCombo: TComboBox
+            Left = 272
+            Top = 63
+            Width = 61
+            Height = 21
+            Style = csDropDownList
+            Anchors = [akLeft, akTop, akRight]
+            ItemHeight = 0
+            TabOrder = 2
           end
         end
       end
diff -Nur winscp.orig\forms\Login.h winscp.patch\forms\Login.h
--- winscp.orig\forms\Login.h   Thu Jan 27 21:27:00 2005
+++ winscp.patch\forms\Login.h   Tue Mar 01 16:20:50 2005
@@ -232,6 +232,8 @@
   TRadioButton *IPv6Button;
   TLabel *Label33;
   TComboBox *BugRekey2Combo;
+  TLabel *Label34;
+  TComboBox *SFTPBugForceUtfCombo;
   void __fastcall DataChange(TObject *Sender);
   void __fastcall FormShow(TObject *Sender);
   void __fastcall SessionListViewSelectItem(TObject *Sender,
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週三 3月 02, 2005 4:36 pm

winscp 的這個 patch 作者剛表示, 如果沒有發現其它的問題, 會加到下一個版本之中.
另外, 有討論到 Big5 碼中, 有 \ 字元的判斷問題, 我在前面這個 patch 是把這個檢查移除. 剛剛建議作者放回去, 在發現有 \ 出現時, 再轉到 UTF-8, 然後再檢查一次, 如果是在 Big5 裡頭的 \ 字元, 應該會轉成別的字元.

修正的方式如下:
代碼: 選擇全部
diff -Nur winscp.orig\core\SftpFileSystem.cpp winscp.patch\core\SftpFileSystem.cpp
--- winscp.orig\core\SftpFileSystem.cpp   Wed Feb 09 09:41:30 2005
+++ winscp.patch\core\SftpFileSystem.cpp   Wed Mar 02 16:17:22 2005
@@ -2442,16 +2454,35 @@
           File = LoadFile(&ListingPacket, NULL, "");
           // security fix
           if (((File->FileName.Length() > 2) && IsDots(File->FileName)) ||
-              (File->FileName.Pos("/") > 0) || (File->FileName.Pos("\\") > 0))
+              (File->FileName.Pos("/") > 0))
           {
             FTerminal->LogEvent(FORMAT("Ignored suspicious file '%s'", (File->FileName)));
             delete File;
           }
           else
           {
-            FileList->AddFile(File);
+            // if we find \\, try convert to UTF-8 then check again
+            if (File->FileName.Pos("\\") > 0)
+            {
+              AnsiString tmpstr = EncodeUTF(File->FileName);
+              if (tmpstr.Pos("\\") > 0)
+              {
+                FTerminal->LogEvent(FORMAT("Ignored suspicious file '%s'", (File->FileName)));
+                delete File;
+              }
+              else
+              {
+                FileList->AddFile(File);
+
+                Total++;
+              }
+            }
+            else
+            {
+              FileList->AddFile(File);
 
-            Total++;
+              Total++;
+            }
           }
 
           if (Total % 10 == 0)
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週日 3月 06, 2005 5:31 pm

twu2 寫:不知道有沒有人使用 amule 2.0 版的?
這個軟體應該怎麼設才能在 zh_TW.UTF-8 下看到中文, 且能夠輸入中文?


經過這兩天的測試, 這個軟體是用 GTK 1.x. 所以設定 /etc/gtk/gtkrc.utf-8 就可以了. 不過我試了兩天, 發現 newsung 的字型我怎麼設定就出不來, unifont 也一樣, 都看不到中文.
最後是試了 uming 的字才可以.

下頭是我的設定.

代碼: 選擇全部
style "default-text" {
       fontset = "-arphic-uming-medium-r-normal--*-160-*-*-p-*-iso10646-1,\
-arphic-uming-medium-r-normal--*-140-*-*-p-*-big5-0,\
-*-freeserif-medium-r-normal--*-140-*-*-p-*-*-*"
}

class "GtkWidget" style "default-text"


另外, 想問一下, UTF-8 的日文與韓文要怎麼設定才可以在 zh_TW.UTF-8 下頭看到?

我試過用 FileZilla 的 unicode 版本, 把一個日文檔案與目錄放到 UTF-8 的 vsftpd 裡頭, 由 FileZilla 是可以正常看到那個日文. (透過 PieTTY 也可以看到 UTF-8 的日文.)
不過在上述的 gtk 1.x 程式中看不到, 只能看到中文.

使用 firefox 倒是可以看到.

是要修改 gtkrc.ja 才可以嗎?
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週五 3月 11, 2005 12:50 pm

filezilla 2.2.12 released. 這個版本已經支援 RFC-2640 的 UTF8 功能.
官方網站的版本應該是 ansi 版本, 無法同時顯示多國文字.
如果需要 unicode 版本 (應該可以正常看到多國文字, 至少... 中文與日文是可以同時出現), 我編好一個放這兒:

http://www.teatime.com.tw/~tommy/filezilla.zip
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章neochao » 週五 3月 11, 2005 4:46 pm

sorry!!請問一下!!
這各PATCH的FILE怎麼更新??
neochao
可愛的小學生
可愛的小學生
 
文章: 1
註冊時間: 週五 3月 11, 2005 4:43 pm
來自: Taiwan

文章twu2 » 週五 3月 11, 2005 5:40 pm

更新? 你要自己 compile 嗎?

不管是不是你要自己產生執行檔, 應該都用不到這個 patch 了, 沒必要更新了吧.
直接抓 CVS 或 filezilla 網站放的 2.2.12 的 source code, 都是已經 patch 過的版本了.

上頭那個我產生的執行檔, 只是把 2.2.12 的 source code 抓下來, 直接設定為 unicode 的版本做出來的. (只有一點差別... 那個日期的判斷的地方, 有一堆歐洲字元會造成我用的 vc 無法正常編譯, 那一段我拿掉了, 其它... 並沒有更改)
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週日 3月 13, 2005 11:48 pm

新增一個 use UTF-8 的選項. (在 site manager 的進階內)
如果這個選取這個選項, 則會認為所有遠端的檔案名稱都使用 UTF-8 編碼. (包含 ftp 與 sftp) 由於這個有異動到相關的語言檔, 所以如果你使用的語言的 .dll 沒有包含這個選項, 可能會無法開啟 "進階選項" 的對話視窗. 請使用有包含這個選項的語言檔, 或者切換到英文語言下面去設定.

我大略試了一下, 應該可以在 sftp 裡頭正常處理多國文字的檔案.

另外, 上頭的訊息列出現的檔案可能是 UTF-8 編碼, 看起來會像是亂碼, 不過運作上很正常.


http://www.teatime.com.tw/~tommy/filezilla.zip

為了方便處理, patch 共有下面三個, 前兩個作者應該會接受. 至於 UTF-8 使用的那一個, 我就不清楚作者會怎麼處理了.
patch 都 submit 到 sourceforge 上頭了.

1. FileZilla 2.2.12a buffer overflow in unicode build
http://www.teatime.com.tw/~tommy/mypatc ... code.patch

2. FileZilla 2.2.12a FzSFtp.exe patch in unicode build
http://www.teatime.com.tw/~tommy/mypatc ... code.patch

3. FileZilla 2.2.12a Force UTF-8 encode for remote patch
http://www.teatime.com.tw/~tommy/mypatc ... utf8.patch

patch 的相關訊息可以參考 http://www.teatime.com.tw/~tommy/mypatch/
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週一 3月 14, 2005 12:06 pm

修改上狀態視窗顯示 utf-8 檔名的問題.
不過, 我發現這個視窗上頭不能顯示 unicode, 所以如果有其它國家的文字, 仍無法正常顯示

http://www.teatime.com.tw/~tommy/filezilla.zip
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週一 3月 14, 2005 5:12 pm

FileZilla 2.2.12a patch to enable unicode string display in status window:
http://www.teatime.com.tw/~tommy/mypatc ... atus.patch

經過這個修正後, 可以在 Filezilla 上頭狀態視窗內正確的看到 unicode 的多國文字.
我想, 我對於 FileZilla 有關 UTF-8 與 unicode 的修正應該到此為止. 如果沒有什麼意外, 我應該不會再修改這個程式.

同樣, 執行檔放這兒:
http://www.teatime.com.tw/~tommy/filezilla.zip

如果要知道作者對這幾個 patch 有沒有興趣, 可以看一下 filezilla 討論區的這篇文章:
http://filezilla.sourceforge.net/forum/ ... .php?t=784
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

上一頁下一頁

回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客