首页 > IT基础架构 > 网络安全 > FTP 語系, 編碼, unicode
Tommy 碎碎念 : FTP 語系, 編碼, unicode
post by tommy @ 11 八月, 2006 10:42
這個世界上, 有許多不同的文化, 所以也有許多不同的文字. 而在電腦的發展上頭, 對於這些文字的處理, 不同的人有不同的處理方式. 所以, 外表看起來是一樣的字, 因為採用的編碼不同, 在電腦上頭就會出現不同的數字來表示. 反之, 在電腦上頭, 同樣的一組數字, 因為所使用的編碼不同, 在不同的編碼系統上頭, 會代表不同的字.
以我們所使用的繁體中文來說. 在一開始發展時, 就存在不同的編碼. 這些編碼都是用 2 個 bytes 來代表一個中文字. 這時就出現了前面所說的, 同樣的兩個 bytes, 在不同的編碼系統上頭, 各自代表不同的字. 這個情形雖然在相互競爭下, 最後幾乎只剩下 BIG5 編碼這一種還在世上存活. 但是, 就算在繁體中文裡頭, BIG5 取得的最後的勝利, 之前所說的情形就消失了嗎?
可惜, 這世界上, 並不是只有繁體中文一種文字, 還有簡體中文, 日文, 韓文等等系統, 也都是使用 2 個 bytes 來表示它們的文字. 所以, 同樣的一個數字, 你把它當成是繁體中文的編碼來看時, 是某個中文字, 把它當成簡體中文來看時, 又是另一個字. 在目前這樣交流頻繁的國際社會中, 此類編碼不同所造成的問題, 仍然無法解決. 就算能解決所有雙位元組編碼的問題, 在雙位元組編碼與單位元組編碼的系統之間, 仍有類似的衝突發生.
UNICODE 的出現, 就是為了解決這種各國編碼不同所造成的問題, 想要透過一種大家都可以接受的編碼, 來包含各國的文字, 如此, 大家都只要使用一種編碼, 再也沒有這類編碼衝突的問題了.
不 過… 這是一種全新的編碼, 所以… 等於要大家都放棄所有的編碼系統, 等到大家都使用 UNICODE 時, 才能真正的解決問題, 否則, 也不過就是多出一種編碼, 與舊有的一堆編碼仍然相互衝突著. 而且, 目前已經存在的各種文件, 仍有待轉換到新的編碼… 這個編碼系統的轉換, 並不是一個小事, 所以… 就算 UNICODE 已經出現了一段時間, 目前距離大一統的地步, 仍有很大的一段路要走.
這 類的情形, 在 Web 介面上頭, 目前的 browser 都可以很簡單的切換到不同的語系, 使用不同的編碼來看對應的網頁, 且在網頁的規格上頭, 網頁的作者也可以標明這個頁面所使用的編碼系統, 讓 browser 可以使用正確的編碼來觀看網頁, 所以編碼所造成的衝突就少了很多. 所以, 除了有必要在同一個頁面同時出現不同地方的文字, 否則, 使用每個地方特有的編碼, 一樣不會造成問題. 如果有需要同時出現不同地方的文字時, 就必須使用同時包含那些文字的編碼系統就可以. 以目前來說, 就是使用 UTF-8 編碼 (UTF-8 就 UNICODE 編碼的一種…. UNICODE 一樣也有很多編碼, UTF-8, UTF-16… 等等).
但是, 在 FTP 上頭, 就不像 Web 那麼簡單了.
因 為 FTP 的相關 RFC 上頭, 之前都沒有對編碼有所定義, 所以… 在 FTP Server 上頭使用 A 編碼, 那麼, 你的 FTP Client 也必須要使用 A 編碼才能看的懂那個檔名. 所以當你要連線到一個日文的 FTP server 時, 你就必須要在日文的環境下, 才能正常的看到並操作該 server 上頭相同編碼的日文檔名.
所以, 後來就有 RFC-2640 的出現, 提出了在 FTP 傳送檔名的過程中, 可以採用 UTF-8 編碼來傳送. 也就是不管 FTP server 原本用什麼編碼, 在傳送檔名到 FTP client 時, 要轉成 UTF-8, 來傳送. 所以 FTP client 收到的就是 UTF-8 編碼後的檔名. 同樣, 如果 FTP client 送指令給 server 時, 也要使用 UTF-8 編碼來傳送, server 收到後再轉成自己 local 使用的編碼, 來操作該檔案或路徑.
這樣子, 解決了 FTP 上頭編碼的問題了嗎? 可惜並沒有. 這個方法, 只有在 server/client 都使用 UNICODE 時, 才是完美的.
在沒有 RFC-2640 之前:
有了 RFC-2640 之後, 在雙方都支援 RFC-2640 時, 至少多出下列幾種:
舉例來說, 在沒有 RFC-2640 之前:
雙方都支援 RFC-2640 時:
所以… 當你要抱怨你的 FTP 出現亂碼時, 先研究看看是那兒出現了問題了吧. 這並不是 server 或 client 單方面的問題, 這個問題, 雙方其實都有可能有問題.
Tags: utf8
[@more@]V来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/190059/viewspace-1024073/ ,如需转载,请注明出处,否则将追究法律责任。