youfou / wxpy

微信机器人 / 可能是最优雅的微信个人号 API ✨✨
http://wxpy.readthedocs.io
MIT License
13.99k stars 2.38k forks source link

使用send_file发送包含中文名的文件时会出错! #326

Open metoogo opened 6 years ago

metoogo commented 6 years ago

我设置了一个功能,收到消息后,经过处理,保存到本地的一个文件,然后再转发到另一个微信号。 保存到本地,是正常的,没问题的,但是发送的时候就会出错。感觉又是编码的问题,不懂要怎么处理…… 代码环境:win10 64位,安装python3.6

基本代码: from wxpy import * import xlwings as xw

bot=Bot() my_friend=bot.friends().rearch('测试')[0]

@bot.register(my_friend,TEXT) def reply_file(msg): save_file_path=r'e:/测试.txt' with open(save_file_path,'a') as f: f.write(msg.text) my_friend.send_file(save_file_path)

embed()

运行后,发现报错,但是 e:\测试.txt 能正常写入。如果把"测试.txt" 改成 “test.txt”,那么功能就都完全正常。

所以估计就是中文文件名发送的问题了,这里其实我是想要实现,谁说的话,就保存为那个人的名字的。肯定会涉及出现中文,所以不知道要怎么处理。

metoogo commented 6 years ago

自己测试了一下,中文文件名的话,不管是用:r"e:/测试.txt" 还是 r"e:\测试.txt" 都是一样的会报错。 报错的信息:

Traceback (most recent call last): File "", line 1, in File "D:\Python3\lib\site-packages\wxpy\api\chats\chat.py", line 54, in wrapped ret = do_send() File "D:\Python3\lib\site-packages\wxpy\utils\misc.py", line 72, in wrapped smart_map(check_response_body, ret) File "D:\Python3\lib\site-packages\wxpy\utils\misc.py", line 207, in smart_map return func(i, *args, **kwargs) File "D:\Python3\lib\site-packages\wxpy\utils\misc.py", line 53, in check_response_body raise ResponseError(err_code=err_code, err_msg=err_msg) wxpy.exceptions.ResponseError: err_code: 1; err_msg:

calfzhou commented 6 years ago

itchat最新的代码已经修复了这个问题,但是还没有发布新版本。我是把itchat源代码放在项目当前目录里面来解决的。 把 https://github.com/littlecodersh/ItChat/tree/master/itchat 这个目录放在项目当前目录中。