
Ich überprüfe meine Anwendung auf verschiedene Kodierungstechniken. In einem solchen Anwendungsfall im Zusammenhang mit dem FTP-Server sehe ich nichts im Zusammenhang mit UTF-16. Das bedeutet, dass ich mich beim FTP-Server anmelden kann, wenn dieser UTF-8 hat, und wenn ich das auf UTF-16 ändere, kann ich mich nicht beim FTP-Server anmelden. Ich habe „FEAT“ von meinem Client auf diesem Server ausgeführt, sehe aber kein UTF-16 in der Antwort. Bedeutet das, dass mein FTP-Server es nicht unterstützt?
Ich kann UTF-8 auf dem FTP-Server aktivieren, indem ich den Befehl ausführe OPTS UTF8 ON
. Gibt es einen solchen Befehl, mit dem ich UTF-16 auf dem FTP-Server aktivieren kann, oder wird UTF-16 nicht unterstützt?
Unten sehen Sie die Antwort auf FEAT
den Befehl
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
** HINWEIS: HTTP/HTTPS unterstützt sowohl UTF-8 als auch UTF-16, wo ich mich anmelden kann
Schritte, die ich versucht habe, bevor ich ins Coding eingestiegen bin
Der FTP-Server wird lokal mit einem Verzeichnis erstellt
Vom FTP-Client (FileZilla) aus eine Verbindung zum FTP-Server herstellen
- Wenn ich den Zeichensatz UTF-8 einstelle, ist die Verbindung erfolgreich.
- Wenn ich den Zeichensatz UTF-16 habe, ist die Verbindung nicht erfolgreich Bildbeschreibung hier eingebenund unten ist die Antwort
Unten ist das Protokoll. Status: Verbindung hergestellt, warte auf Willkommensnachricht ... Antwort: ㈲ⴰ楆敬楚汬敓癲牥ㄠ㐮ㄮ Fehler: Verbindung zum Server konnte nicht hergestellt werden. Status: Warte auf erneuten Versuch ... Status: Adresse von localhost wird aufgelöst. Status: Verbindung zu 127.0.0.1:21 wird hergestellt ... Status: Verbindung hergestellt, warte auf Willkommensnachricht ... Antwort: ㈲ⴰ楆敬楚汬敓癲牥ㄠ㐮ㄮ Fehler: Verbindung zum Server konnte nicht hergestellt werden.
Antwort1
FTP unterstützt UTF-16 nicht. Es ist ein textbasiertes Protokoll, das ASCII für Befehle und Antworten verwendet; es kann UTF-8 nur unterstützen, weil letzteres eine Obermenge von ASCII ist (d. h. Befehle wie FEAT
sind in beiden Fällen genau gleich kodiert). Dasselbe gilt für ältere Kodierungen wie ISO-8859, abernichtgilt für UTF-16 – die anfängliche Serverbegrüßung (die immer in ASCII erfolgt) wird von einem Client, der UTF-16 erwartet, nicht verstanden und als UTF-16 gesendete Befehle werden vom Server nicht verstanden.
Normalerweise besteht jedoch kein praktischer Bedarf, beide Kodierungen zu unterstützen – UTF-8 und UTF-16 sind lediglich unterschiedliche Darstellungen derselben Unicode-Codepunkte; jeder Dateiname, der als UTF-16 kodiert werden kann, kann auch als UTF-8 kodiert werden und umgekehrt. Obwohl Windows beispielsweise intern UTF-16 für Dateinamen verwendet, verwenden Windows-FTP-Server weiterhin UTF-8 und konvertieren einfach bei Bedarf zwischen den beiden.