[分享] 打造 Unicode 的環境

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

文章sandpaper » 週六 2月 26, 2005 8:05 pm

先感謝一下 :-D

不過剛剛試
gftp好像還是不行 :-(
下載中文檔案會出現
代碼: 選擇全部
Error converting string '\u932f\u8aa4\uff1a\u7121\u6cd5\u65b0\u589e\u76ee\u9304 /mnt/hdb5/vedio/[DVD]\uffff\uffff\uffffB\uffffd\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uff1a\u4e0d\u9069\u7528\u7684\u5f15\u6578
' to UTF-8 from current locale: Invalid byte sequence in conversion input
Error converting string '\u7121\u6cd5\u4e0b\u8f09 /movie-2/[DVD]\uffff\uffff\uffffB\uffffd\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff/pme-avle.fr.scr.chs.srt (\u5f9e 140.117.182.63)
' to UTF-8 from current locale: Invalid byte sequence in conversion input
(gftp-gtk:5091): Gtk-CRITICAL **: gtk_text_buffer_emit_insert: assertion `g_utf8_validate (text, len, NULL)' failed

把~/.gftp/gftprc的remote_charsets=big5開啟gftp

下LC_ALL=zh_TW.Big5 gftp開啟
下載中文檔案都會這樣
如果remote_charsets改成utf-8或utf8
都會看不到中文

我是下載deb檔來裝的
sandpaper
可愛的小學生
可愛的小學生
 
文章: 73
註冊時間: 週六 1月 15, 2005 12:47 am

文章twu2 » 週六 2月 26, 2005 9:39 pm

sandpaper 寫:gftp好像還是不行 :-(
把~/.gftp/gftprc的remote_charsets=big5開啟gftp

下LC_ALL=zh_TW.Big5 gftp開啟


請在 LC_ALL=zh_TW.UTF-8 下頭使用.
我沒裝過沒 patch 過的 gftp 版本, 所以不確定原本的版本在 Big5 下頭是否可以用.

不過, 依據我看裡頭 source 的了解, 似乎 gftp 只能在 UTF-8 <-> UTF-8 之間正常使用. 用在 Big5 下頭似乎會有問題.

我的改法, 只能確保 UTF-8 (gftp) <-> UTF-8/Big5/or others (server) 裡頭, 可以正常看到別的編碼的檔名. 檔名傳回來, 會用 UTF-8 產生正常的檔名. (不過, 只改這兒, 所以傳檔之間, 那些 ftp 的訊息都沒改, 也就是還是出現 remote_charsets 的編碼訊息.

另外, 依照 gftp 的設計, remote_charsets 設定為 utf-8 (utf8 不知道可不可以用, 因為我記得 iconv 是用 UTF-8 這個名字), 是沒有作用的. 因為沒有設定時, 就是用 utf-8 傳送檔名.
最後由 twu2 於 週一 2月 28, 2005 12:08 pm 編輯,總共編輯了 1 次。
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章sandpaper » 週日 2月 27, 2005 1:29 am

若是在zh_TW.UTF-8環境下開啟gftp(就是我原本的作業環境)
則會看不到中文的資料夾或檔名
這是會出現的訊息
代碼: 選擇全部
(gftp-gtk:6588): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()

locale都是zh_TW.UTF-8
也試過把~/.gftp刪除...
情況仍然相同
sandpaper
可愛的小學生
可愛的小學生
 
文章: 73
註冊時間: 週六 1月 15, 2005 12:47 am

文章twu2 » 週日 2月 27, 2005 11:20 pm

gftp-gtk... 沒改. 我不太確定裡頭怎麼處理的. (我的桌面環境還是用 XP..... 這東西沒用到, 也沒什麼動力去修改)
我只改 gftp 用的 lib 裡頭的檔案. gftp-text 是可以運作的.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週日 2月 27, 2005 11:25 pm

昨天把 filezilla 的 patch 丟給作者去看, 結果, 因為我改的東西, 在 unicode 版本的編譯下頭會有問題... 我才發現... 原本 filezilla 有 unicode 版本?
那網站上頭抓到的執行檔是一般 ansi codepage 版本? 還是 unicode 版本呢?

我也不太清楚, 不過, 我發現我自己編的 unicode 版本, 就算沒有加上我的 patch, 也無法正常處理 big5 的中文. (由此看來, 似乎網站上頭那個執行檔不是 unicode 版本才對)

查了半天, 才發現原本作者在收到資料時, 是一個位元一個位元的方式, 由 ANSI 轉成 UNICODE, 這... 在沒有中文時, 當然是正常的, 有中文的話.... 一轉完... 中文也跟著完了, 反而變成亂碼.

所以改了比較大範圍的程式, 把這個轉換, 由一個位元改成一整行字串一起轉. 改了之後, 也的確可以看到中文了.

不過改好之後.... 發現我產生的 unicode 版本, 一執行..... 只要有中文出現, 隨時都可以 core dump.... 害我弄到今天下午才發現, 原本上頭顯示指令執行狀態的那個 list control 可能有問題, 因為... 後來發現不顯示就不會當. 才發現裡頭字串在顯示前又轉換一次, 但是 buffer 取得的大小有問題, 如果有中文可能就不夠大... 接著... 一複製就把 heap 給弄亂了. 造成後續整個程式變的很不穩定.

晚上測試了一下, 目前看來應該都沒有問題了. 剩下 unicode 版本... 到底能不能同時顯示多國文字, 我只有中文環境, 測不出來.
不過, 至少在中文下頭, 是沒有問題的.

這個壓縮檔案內有兩個執行檔. FileZillaA.exe 是 ansi codepage 版本, FileZilla.exe 是 unicode 版本.
兩個版本都有支援 RFC-2640. 在我的中文 XP 下頭使用, 都可以正常處理中文檔名.
http://www.teatime.com.tw/~tommy/FileZilla.zip

如果想自己編的, patch 在這兒:
http://www.teatime.com.tw/~tommy/filezi ... 2640.patch

這個 patch 剛剛有丟到 filezilla 的討論區給作者. 如果沒有問題, 希望下一個 2.2.x 的版本可以內建上去. (作者在開發 3.0 版.... 不知道會不會真的把這個功能放到 2.x 版上頭)

PS. 我還是沒做 IDN 的部份, 所以上頭那個執行檔, 都不能正常處理非英文的網域名.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章sandpaper » 週一 2月 28, 2005 12:43 am

請問之前gftp的deb檔還有嗎?(第一次改的那個檔案)
因為記得之前好像有成功下載...只是顯示是亂碼...(記不大清楚...還是我眼花了)
後來換了第二次更改後的檔案就不行了

所以想試試看....無論如何....真的很多謝..... :finger1:
我所有的網頁all in one note^^
blog: http://paperli.blogspot.com/
個人網頁: http://web.ekm.com/paper/
留言簿: http://www.aypwip.org/webnote/paper/
歡迎光臨 :finger1:
sandpaper
可愛的小學生
可愛的小學生
 
文章: 73
註冊時間: 週六 1月 15, 2005 12:47 am

文章twu2 » 週一 2月 28, 2005 8:43 am

目前的 patch 與第一次放的 patch 的差別只在於處理 local 檔案的名稱編碼.
至於顯示的地方並沒有再改.

如果你之前用 gftp-gtk 可以, 現在不行, 試著只裝 gftp-text gftp-common 就好, gftp-gtk 就裝 debian 原本那個看看.

我剛剛用 pietty 連回家裡的主機, 在 zh_TW.UTF-8 下頭, 使用 gftp (text mode), 不論 server 那端送來的是 Big5 還是 UTF-8 都可以用 UTF-8 正常看到.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週一 2月 28, 2005 10:15 am

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

輸入我好像有試出來過... 不過看不到中文, 能打也沒有用.

Big5 的環境裡頭, 中文使用上就沒什麼問題.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章sandpaper » 週一 2月 28, 2005 11:20 am

先sorry一下
我可能眼花了....

過了一天.....結果可以下載
看來原本我應該是眼花了
但是我目前是有把remote_charsets=big5
不然仍是看不到對方的中文檔名
還有改檔名成utf8好像只有第一個檔案會改成功
(就是說如果一次拉a b c d...四個檔案...只有a會改成功)
看了一下錯誤訊息
好像會抓到gftp本身的系統訊息
代碼: 選擇全部
Error converting string '成功傳送 /mp3/\uffffk\uffffq\uffff\uffff/\uffff\uffff\uffff}/\uffff\uffff\uffff}-\uffff\uffff\uffff\uffff/02.\uffff\uffff\uffff\uffff.mp3速度為
' from character set big5 to character set UTF-8: Invalid byte sequence in conversion input

不只抓到檔名....還抓到"成功傳送"..."速度為..."
因為這樣所以下個檔案會無法改檔名編碼?
----
真的很感謝大大的付出阿 :crying: (哭一下來感謝)....可以下載歌了
sandpaper
可愛的小學生
可愛的小學生
 
文章: 73
註冊時間: 週六 1月 15, 2005 12:47 am

文章twu2 » 週一 2月 28, 2005 12:04 pm

下面是我的測試, gftp 在 zh_TW.UTF-8 下執行. Server 送出的是 Big5 的編碼.

代碼: 選擇全部
ftp> dir *.test
Loading directory listing /home/tommy from cache (LC_TIME=en_US.ISO8859-1)
drwx------                             0 Jan 01  1970 ..
-rw-r-----     1000     1000       45568 Feb 28 03:50 中文.test
-rw-r-----     1000     1000       45568 Feb 28 03:51 中文2.test
ftp> get *.test
Loading directory listing /home/tommy from cache (LC_TIME=en_US.ISO8859-1)
▒▒▒b▒M▒▒D▒▒ localhost
▒dzƹ▒▒ localhost:21
▒▒▒\▒s▒u▒▒ localhost:21
220 Welcome to TeaTime FTP service.
USER tommy
331 Please specify the password.
PASS xxxx
230 Login successful.
SYST
215 UNIX Type: L8
TYPE I
200 Switching to Binary mode.
CWD /home/tommy
250 Directory successfully changed.
PASV
227 Entering Passive Mode (127,0,0,1,22,119)
RETR /home/tommy/▒▒▒▒.test
150 Opening BINARY mode data connection for /home/tommy/▒▒▒▒.test (45568 bytes).
\ [============================================================] @ 769.96KB/s
226 File send OK.
Error converting string '成功傳送 /home/tommy/▒▒▒▒.test,速度為每秒 769.96 KB
' from character set big5 to character set UTF-8: 轉換輸入資料時遇到不正確的位元組次序
成功傳送 /home/tommy/▒▒▒▒.test,速度為每秒 769.96 KB
Error converting string 'Successfully changed mode of ▒▒                       /share/locale/zh_TW.UTF-8/LC_MESSAGES/gftp.mo to 640
' from character set big5 to character set UTF-8: 轉換輸入資料時遇到不正確的位元組次序
Successfully changed mode of ▒▒                                                /share/locale/zh_TW.UTF-8/LC_MESSAGES/gftp.mo to 640
PASV
227 Entering Passive Mode (127,0,0,1,145,180)
RETR /home/tommy/▒▒▒▒2.test
150 Opening BINARY mode data connection for /home/tommy/▒▒▒▒2.test (45568
bytes).
\ [============================================================] @ 1307.34KB/s
226 File send OK.
Error converting string '成功傳送 /home/tommy/▒▒▒▒2.test,速度為每秒 1307.34 KB
' from character set big5 to character set UTF-8: 轉換輸入資料時遇到不正確的位元組次序
成功傳送 /home/tommy/▒▒▒▒2.test,速度為每秒 1307.34 KB
Successfully changed mode of  to 640
ftp> tommy@mail:~/tmp$
tommy@mail:~/tmp$ l
總計 104
drwxr-xr-x   2 tommy users    43 2005-02-28 11:51 .
drwxr-xr-x  18 tommy users  4096 2005-02-28 11:51 ..
-rw-r-----   1 tommy users 45568 2005-02-28 11:51 中文.test
-rw-r-----   1 tommy users 45568 2005-02-28 11:51 中文2.test
tommy@mail:~/tmp$


在 dir 指令後, 可以看到正常的中文檔名 (gftp 會由 big5 -> utf8).
下載之後, 看到的檔名也是正常的中文檔名. (utf8 編碼)

至於整個 ftp 之間傳送的命令與回應訊息, 則是 utf8 與 big5 混用. 至於為什麼混用... 因為 gftp 會做一連串的編碼轉換, 結果就是如此... 有些轉了一次, 所以正常, 有些轉了好幾次, 又轉回去了...

因為不影響看檔案名稱與下傳後的存檔檔名, 所以我就不管了.

另外, 雖然可以看到中文檔名, 但是 dir/get 指令的參數如果直接輸入中文... 還是會有問題.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章twu2 » 週一 2月 28, 2005 3:24 pm

今天再改了一下 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 碼, 會有轉碼失敗的錯誤訊息, 應該不會影響正常使用.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章sandpaper » 週一 2月 28, 2005 7:15 pm

喔喔!!都ok了....大感謝.... :finger1:
我所有的網頁all in one note^^
blog: http://paperli.blogspot.com/
個人網頁: http://web.ekm.com/paper/
留言簿: http://www.aypwip.org/webnote/paper/
歡迎光臨 :finger1:
sandpaper
可愛的小學生
可愛的小學生
 
文章: 73
註冊時間: 週六 1月 15, 2005 12:47 am

文章twu2 » 週二 3月 01, 2005 9:31 am

昨天 filezilla 的作者把我給他的 patch 放入 cvs 中了.
我今天早上抓 cvs 下來, 的確可以正常運作了.

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

由於 patch 進入 cvs 了, 所以前頭那幾個 link 的檔案我就移除了, 有興趣的自己由 cvs 抓下來看.

我放了加上這些 patch 的執行檔如下, 如果你不在 unicode 的環境下頭, 可以使用 FileZillaA.exe 這一個, 如果在 unicode 下頭, 直接使用 FileZilla.exe 就可以.

這個 FileZilla.exe 應該可以正常處理多國語言. 也就是如果 server 支援 UTF-8, 上頭有多國的檔名, 應該都可以正常看到.

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

文章twu2 » 週二 3月 01, 2005 9:40 am

對了, 有人用 WinSCP 嗎?
在 WinSCP 上頭說, 由 3.7.1 版本之後就支援 version 4 sftp, 可以正常處理 UTF-8 的檔名.

不過.... 在 debian 中, 好像只有 openssh 內附的那個 sftp-server, 應該沒有支援 version 4 sftp.... 因為我還是看到一堆亂碼. :-(

有什麼方法嗎?
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

文章Tetralet » 週二 3月 01, 2005 10:35 am

twu2 寫:昨天 filezilla 的作者把我給他的 patch 放入 cvs 中了.
我今天早上抓 cvs 下來, 的確可以正常運作了.

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

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

可否請教一下,
為什麼要轉換那麼多次呢?

twu2 寫:我放了加上這些 patch 的執行檔如下, 如果你不在 unicode 的環境下頭, 可以使用 FileZillaA.exe 這一個, 如果在 unicode 下頭, 直接使用 FileZilla.exe 就可以.

請問,Unicode 的版本是不是用於 MS Windows 2000/XP/2003 下的;
而非 Unicode 的版本是不是用於 MS Windows 95/98/ME 下的呢?
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

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

上一頁下一頁

回到 share

誰在線上

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