FTP文件名编码

时间:2011-02-11 08:12:39

标签: python encoding ftp twisted

您好 我使用扭曲的库连接到FTP服务器,但我有文件名编码的问题。 我收到'Illusion-N \ xf3z.txt'所以它不是unicode。是否有强制特定编码的FTP命令? 提前致谢! MK

2 个答案:

答案 0 :(得分:4)

有两种可能性:

  • FTP不支持unicode。在这个例子中,您正在与之交谈的服务器看起来像是在发送Latin-1编码的字节。因此,您需要在收到字节时使用该编码对字节进行解码。
  • an RFC更新FTP以支持UTF-8。检查FEAT命令的结果以查看UTF8是否存在(但可能不是,因为示例字节无效UTF-8)。如果是,则使用UTF-8解码字节。

Twisted的FTP客户端不会为它做任何与unicode相关的事情,因为它只是实现了基本的FTP RFC。

答案 1 :(得分:2)

FTP忽略编码;只要文件名不包含'\0'(空字符)并且'/'(斜杠)分隔目录,它就会愉快地接受任何内容。

自己解码和编码文件名。您的示例中使用的编码很可能是“cp1252”,即“Windows Western”或类似的东西。

在您的情况下,当您收到'Illusion-N \ xf3z.txt'时,请按'Illusion-N\xf3z.txt'.decode('cp1252')将其转换为Unicode。