FTP 文件名编码
你好,
我在用 twisted 这个库连接 FTP 服务器的时候遇到了文件名编码的问题。
我收到的文件名是 'Illusion-N\xf3z.txt',所以它不是 Unicode 编码。
有没有什么 FTP 命令可以强制使用特定的编码呢?
提前谢谢你!
MK
2 个回答
2
FTP在处理文件名时不太关心编码,只要文件名里没有'\0'
(空字符)和'/'
(斜杠)来分隔文件夹,它就能接受任何东西。
你需要自己处理文件名的编码和解码。你提到的例子中,很可能使用的编码是“cp1252”,也就是“Windows西方编码”之类的。
在你的例子中,当你收到'Illusion-N\xf3z.txt'时,可以通过'Illusion-N\xf3z.txt'.decode('cp1252')
把它转换成Unicode格式。
4
这里有两种可能性:
- FTP不支持Unicode。看起来你提到的这个服务器发送的是Latin-1编码的字节。所以当你接收到这些字节时,需要用这种编码来解码。
- 有一个RFC文档,更新了FTP,使其支持UTF-8编码。你可以通过执行
FEAT
命令来检查是否有UTF8
这个选项(但可能没有,因为示例中的字节不是有效的UTF-8)。如果有的话,就用UTF-8来解码这些字节。
Twisted的FTP客户端不会处理任何与Unicode相关的内容,因为它只是实现了基本的FTP规范。