
我正在檢查我的應用程式是否有不同的編碼技術。在一個與 FTP 伺服器相關的用例中,我沒有看到任何與 UTF-16 相關的內容。這意味著如果 FTP 伺服器具有 UTF-8,我就可以登入,如果我將其變更為 UTF-16,我將無法登入 FTP 伺服器。我已從該伺服器上的客戶端執行了“FEAT”,但在回應中沒有看到 UTF-16。這是否意味著我的 FTP 伺服器不支援它?
我可以透過執行指令在 FTP 伺服器上啟用 UTF-8 OPTS UTF8 ON
。是否有任何這樣的命令可以在 FTP 伺服器上啟用 UTF-16 或它不支援 UTF-16 ?
FEAT
下面是命令的回應
Command: FEAT
Response: 211-Features:
Response: MDTM
Response: REST STREAM
Response: SIZE
Response: MLST type*;size*;modify*;perm*;
Response: MLSD
Response: AUTH SSL
Response: AUTH TLS
Response: PROT
Response: PBSZ
Response: **UTF8**
Response: TVFS
Response: EPSV
Response: EPRT
Response: MFMT
Response: 211 End
** 注意:HTTP/HTTPS 支援 UTF-8 和 UTF-16,我可以在其中登入
在進入codng之前我已經嘗試過的步驟
FTP伺服器在本機上建立並帶有目錄
從 FTP 用戶端 (FileZilla) 連接到 FTP 伺服器
- 當我的字元集為UTF-8時,連接成功。
- 當我的字元集為UTF-16時,連接不成功 在此輸入影像描述下面是回應
以下是日誌 狀態:已建立連接,等待歡迎訊息... 回應:㈲ⴰ楆敬楚汬敓顛牥ㄠ㐮ㄮ 錯誤:無法連接到伺服器 狀態:正在等待重試... 狀態:正在解析位址本機狀態:正在連接到127.0.0.1:21... 狀態:已建立連接,正在等待歡迎訊息... 回應:㈲ⴰ楆敬楚汬敓不穩定牥ㄠ㐮ㄮ錯誤:無法連接到伺服器
答案1
FTP 不支援 UTF-16。它是一種基於文字的協議,使用 ASCII 來表示命令和回應;它之所以能夠支援 UTF-8,只是因為後者是 ASCII 的超集(例如,類似的命令FEAT
在兩者中的編碼方式完全相同)。這同樣適用於較舊的編碼,例如 ISO-8859,但是才不是適用於 UTF-16 – 初始伺服器問候語(始終為 ASCII)不會被期望 UTF-16 的客戶端理解,並且伺服器也不會理解以 UTF-16 發送的命令。
然而,通常沒有實際需要支援這兩種編碼 - UTF-8 和 UTF-16 只是相同 Unicode 碼點的不同表示形式;任何可以編碼為 UTF-16 的檔案名稱也可以編碼為 UTF-8,反之亦然。例如,儘管 Windows 內部使用 UTF-16 作為檔案名,但 Windows FTP 伺服器仍然使用 UTF-8,並且只是根據需要在兩者之間進行轉換。