FTP伺服器支援UTF-16編碼嗎?

FTP伺服器支援UTF-16編碼嗎?

我正在檢查我的應用程式是否有不同的編碼技術。在一個與 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之前我已經嘗試過的步驟

  1. FTP伺服器在本機上建立並帶有目錄

  2. 從 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,並且只是根據需要在兩者之間進行轉換。

相關內容