
Estoy revisando mi solicitud para detectar diferentes técnicas de codificación. En uno de esos casos de uso relacionado con el servidor FTP, no veo nada relacionado con UTF-16. Esto significa que puedo iniciar sesión en el servidor FTP si tiene UTF-8 y si lo cambio a UTF-16 no puedo iniciar sesión en el servidor FTP. Ejecuté "FEAT" desde mi cliente en ese servidor, no veo UTF-16 en la respuesta. ¿Esto significa que mi servidor FTP no lo admite?
Puedo habilitar UTF-8 en el servidor FTP ejecutando el comando OPTS UTF8 ON
. ¿Existe algún comando de este tipo donde pueda habilitar UTF-16 en el servidor FTP o no es compatible con UTF-16?
A continuación se muestra la respuesta del FEAT
comando.
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
** NOTA: HTTP/HTTPS admite UTF-8 y UTF-16 donde puedo iniciar sesión
Pasos que he probado antes de comenzar a codificar
El servidor FTP se crea localmente con un directorio
Desde el cliente FTP (FileZilla) conectándose al servidor FTP
- Cuando tengo el conjunto de caracteres UTF-8, la conexión se realiza correctamente.
- Cuando tengo un conjunto de caracteres como UTF-16, la conexión no es exitosa ingrese la descripción de la imagen aquíy abajo esta la respuesta
A continuación se muestra el estado del registro: Conexión establecida, esperando mensaje de bienvenida... Respuesta: ㈲ⴰ楆敬楚汬敓癲牥ㄠ㐮ㄮ Error: No se pudo conectar al servidor Estado: Esperando volver a intentarlo... Estado: Resolviendo dirección de localhost Estado: Conectándose a 127.0.0.1:21... Estado: Conexión establecida, esperando mensaje de bienvenida... Respuesta: ㈲ⴰ楆敬楚汬敓癲牥ㄠ㐮ㄮ Error: No se pudo conectar al servidor
Respuesta1
FTP no es compatible con UTF-16. Es un protocolo basado en texto que utiliza ASCII para comandos y respuestas; es capaz de soportar UTF-8 sólo porque este último es un superconjunto de ASCII (por ejemplo, comandos como FEAT
están codificados exactamente de la misma manera en ambos). Lo mismo se aplica a codificaciones más antiguas como ISO-8859, perono esse aplica a UTF-16: el saludo inicial del servidor (que siempre está en ASCII) no será entendido por un cliente que espera UTF-16, y el servidor no entenderá los comandos enviados como UTF-16.
Sin embargo, normalmente no existe una necesidad práctica de admitir ambas codificaciones: tanto UTF-8 como UTF-16 son simplemente representaciones diferentes de los mismos puntos de código Unicode; cualquier nombre de archivo que pueda codificarse en UTF-16 también puede codificarse como UTF-8 y viceversa. Por ejemplo, aunque Windows usa internamente UTF-16 para los nombres de archivos, los servidores FTP de Windows todavía usan UTF-8 y simplemente convierten entre los dos según sea necesario.