Ftplib.cwd出错:UnicodeEncodeError:'latin-1'编解码器无法编码字符

时间:2016-01-20 14:17:31

标签: python ftplib latin1

有很多关于'latin-1'编解码器的帖子,但是这些答案无法解决我的问题,也许这是我的问题,我只是一个学习python的新手。当我使用 cwd(dirname) 来更改ftp站点的目录时,发生了unicodeerror。注意 dirname 包含中文字符,显然,这些字符会导致此错误。我根据过去帖子中的建议做了一些编码和解码,但是没有用。 有人可以给我一些建议如何修复此错误并使 cwd 工作吗?

部分代码:

file = 'myhongze.jpg'
dirname = './项目成员资料/zgcao/test-python/'
site = '***.***.***.***'
user = ('zhigang',getpass('Input Pwd:'))    
ftp = FTP(site)
ftp.login(*user)            
ftp.cwd(dirname)# throw exception

一些测试:

U './项目成员资料/ zgcao /测试蟒/'。编码( 'UTF-8')

输出:

B” ./ \ xe9 \ XA1 \ xb9 \ XE7 \ x9b \ XAE \ XE6 \ X88 \ X90 \ xe5 \ X91 \ X98 \ xe8 \ XB5 \ X84 \ XE6 \ X96 \ X99 / zgcao /测试蟒/ “

U './项目成员资料/ zgcao /测试蟒/'。编码( 'UTF-8')。解码( 'CP1252')

输出:

UnicodeDecodeError:'charmap'编解码器无法解码位置10中的字节0x90:字符映射到

U './项目成员资料/ zgcao /测试蟒/'。编码( 'UTF-8')。解码( '拉丁-1')

输出:

'./项ç\x9b®æ\ X88 \x90å\ X91 \x98èμ\x84æ\ X96 \ X99 / zgcao /测试蟒/' 使用解码结果('latin-1'),cwd仍然不能正常工作。

我注意到项目成员资料使用ÏîÄ¿×é³ÉԱ˽ÈË¿Õ¼äretrlines('LIST')显示为@Produces

2 个答案:

答案 0 :(得分:1)

无需编辑ftplib源代码。只需在您的代码中设置 await transporter.sendMail({ from: '"haha" <noonieumsmith@gmail.com>', // sender address to: `${email} `, // list of receivers subject: "....", // Subject line text: "Please confirm your email by typing this code in webiste", // plain text body html: ` <div> This is the code for your email varification <div> ${varificationCode} </div> </div>`, 属性:

No recipients defined

关于FTP输出而不是输入的类似问题:
List files with UTF-8 characters in the name in Python ftplib

答案 1 :(得分:0)

我通过编辑ftplib.py解决了这个问题。在我的机器上,它位于C:\Users\<user>\AppData\Local\Programs\Python\Python36\Lib下。

您只需将encoding = "latin-1"替换为encoding = "utf-8"

即可