FTP サーバーは UTF-16 エンコードをサポートしていますか?

FTP サーバーは UTF-16 エンコードをサポートしていますか?

アプリケーションでさまざまなエンコード手法を確認しています。FTP サーバーに関連する使用例の 1 つで、UTF-16 に関連するものは見つかりませんでした。つまり、UTF-8 を使用している場合は FTP サーバーにログインできますが、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の両方をサポートしており、ログインすることができます

コーディングを始める前に試した手順

  1. FTPサーバーはディレクトリとともにローカルに作成される

  2. FTPクライアント(FileZilla)からFTPサーバーに接続する

    以下はログです ステータス: 接続が確立されました。ようこそメッセージを待っています... 応答: ㈲ⴰ楆敬楚汬⁡敓癲牥ㄠ㐮ㄮ エラー: サーバーに接続できませんでした ステータス: 再試行を待機しています... ステータス: localhost のアドレスを解決しています ステータス: 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 を使用し、必要に応じて 2 つのエンコードを変換します。

関連情報