Поддерживает ли FTP-сервер кодировку UTF-16?

Поддерживает ли FTP-сервер кодировку UTF-16?

Я проверяю свое приложение на наличие различных методов кодирования. В одном из таких случаев использования, связанных с FTP-сервером, я не вижу ничего, связанного с UTF-16. Это означает, что я могу войти на FTP-сервер, если на нем UTF-8, а если я изменю его на UTF-16, я не смогу войти на FTP-сервер. Я выполнил "FEAT" из своего клиента на этом сервере, я не вижу UTF-16 в ответе. Означает ли это, что мой FTP-сервер не поддерживает его?

Я могу включить UTF-8 на FTP-сервере, выполнив команду OPTS UTF8 ON. Есть ли такая команда, с помощью которой я могу включить UTF-16 на FTP-сервере или он не поддерживает 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-серверу

    • Если у меня установлена ​​кодировка UTF-8, соединение устанавливается успешно.
    • Когда у меня установлена ​​кодировка UTF-16, соединение не устанавливается введите описание изображения здесьи ниже ответ

    Ниже приведен журнал. Статус: соединение установлено, ожидание приветственного сообщения... Ответ: ㈲ⴰ楆敬楚汬⁡敓癲牥ㄠ㐮ㄮ Ошибка: не удалось подключиться к серверу Статус: ожидание повторной попытки... Статус: разрешение адреса 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 для имен файлов, FTP-серверы Windows по-прежнему используют UTF-8 и просто преобразуют их по мере необходимости.

Связанный контент