Кодировка имени файла FTP - PullRequest
1 голос
/ 11 февраля 2011

Привет! Я использую витую библиотеку для подключения к FTP-серверу, но у меня проблема с кодировкой имени файла.Я получаю Illusion-N \ xf3z.txt, так что это не Unicode.Есть ли какая-либо команда FTP для принудительного кодирования?Заранее спасибо!MK

Ответы [ 2 ]

4 голосов
/ 11 февраля 2011

Существует две возможности:

  • FTP не поддерживает Unicode.Похоже, что сервер, с которым вы говорите в этом примере, отправляет байты в кодировке Latin-1.Поэтому вам необходимо декодировать байты, используя эту кодировку, когда вы их получаете.
  • Существует RFC , который обновляет FTP для поддержки UTF-8.Проверьте результаты команды FEAT, чтобы увидеть, есть ли UTF8 (но, вероятно, это не так, поскольку байты примера не являются допустимыми UTF-8).Если это так, декодируйте байты с помощью UTF-8.

FTP-клиент Twisted не будет выполнять для него ничего, связанного с юникодом, поскольку он просто реализует базовый FTP RFC.

2 голосов
/ 06 марта 2011

FTP игнорирует кодировки;до тех пор, пока имя файла не содержит '\0' (нулевой символ) и '/' (косая черта) разделяет каталоги, оно с радостью принимает все.

Делайте свое собственное декодирование и кодирование имен файлов.Вполне вероятно, что в вашем примере используется кодировка «cp1252», то есть «Windows Western» или что-то в этом роде.

В вашем случае, когда вы получаете «Illusion-N \ xf3z.txt», конвертируйте его в Unicode 'Illusion-N\xf3z.txt'.decode('cp1252').

...