这几天在用wxpy写机器人,在调用里面的上传文件接口的时候,一直报错。经过排查后,发现是不支持中文文件名;
在群里问了下作者后才知道是requests惹的祸,默认requests用的是unicode来处理文件路径的,所以一旦文件名里面包含了汉字,就会出现下面的错误。

An error occurred in <function process_text at 0x000001BB634DCEA0>.
Traceback (most recent call last):
File "C:\Program Files\Python35\lib\site-packages\wxpy\api\bot.py", line 335, in process
ret = config.func(msg)
File "C:/Users/Administrator/PycharmProjects/example/weixin/1.py", line 62, in process_text
msg.reply_file(r"D:\视频播放方法-windows.docx")
File "C:\Program Files\Python35\lib\site-packages\wxpy\utils\misc.py", line 59, in wrapped
smart_map(check_response_body, ret)
File "C:\Program Files\Python35\lib\site-packages\wxpy\utils\misc.py", line 179, in smart_map
return func(i, *args, **kwargs)
File "C:\Program Files\Python35\lib\site-packages\wxpy\utils\misc.py", line 25, in check_response_body
raise ResponseError('ret: {}; err_msg: {}'.format(ret, err_msg))
wxpy.exceptions.ResponseError: ret: 1; err_msg:

好了,不多说,直接给解决方案

requests处理文件路径的模块是:C:\Program Files\Python35\Lib\site-packages\requests\packages\urllib3\fields.py

打开它!

1 value = email.utils.encode_rfc2231(value, 'utf-8')
2 value = '%s*=%s' % (name, value) # 报错的原因就是这行代码

把它改成这样就可以正常运行了。

1 value = email.utils.encode_rfc2231(value, 'utf-8')
2 value = '%s="%s"' % (name, value.encode('utf-8'))

提示:我用的python3.5.2,其它版本的要所情况改下编码就行了

参考资料:
http://blog.csdn.net/wendaoinbeijing/article/details/48247261
https://github.com/requests/requests/issues/2117
https://segmentfault.com/q/1010000002633223/a-1020000002657633

requests 上件中文文件名报错解决方案的更多相关文章

  1. Flask下如何处理Requests 上传中文文件名的问题

    一.问题的由来     最近有个项目,叫做文档服务资源中心,类似于七牛,为各个业务系统提供统一的文件资源服务,包括文件的存储.操作管理.下载.预览等.在做文件存储的时候,遇到了这个当指定上传的文件名为 ...

  2. 关于python操作带有中文文件名报错的解决办法

    python代码的编码格式       #coding:utf-8 在操作文件时,如果文件名带有中文,则需要将文件路径以Unicode的编码格式进行操作 具体的方式如下 path = "你的 ...

  3. Mac上PyCharm运行多进程报错的解决方案

    Mac上PyCharm运行多进程报错的解决方案 运行时报错 may have been in progress in another thread when fork() was called. We ...

  4. 转:CentOS上安装LAMP之第三步:MySQL环境及安装过程报错解决方案(纯净系统环境)

    这是AMP运行环境中最后配置的环境: 惯例传送门: 1.编译安装MySQL cd /home/zhangatle/tar tar zxvf mysql-.tar.gz cd mysql- cmake ...

  5. 用户 'IIS APPPOOL\**' 登录失败的解决方案(项目部署到本地IIS上打开网页出现报错)

    为开发方便-将项目部署到本地IIS上打开网页出现报错 1.打开IIS管理 2.点击应用池 3.找到你部署的网站名,右键“高级设置”——>“进程模型”——>“标识”修改为localsyste ...

  6. 用了skin皮肤控件之后,报错:容量超出了最大容量 参数名:capacity

    http://blog.csdn.net/keenweiwei/article/details/7403869 用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity MessageBo ...

  7. RabbitMQ>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as OnFail is set to ignore.-报错解决方案 原来是NNND。。。

    >Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as ...

  8. JMeter 报告监听器导入.jtl结果文件报错解决方案

    JMeter 报告监听器导入.jtl结果文件报错解决方案   by:授客 QQ:1033553122   1. 问题描述 把jmeter压测时生成的 .jtl结果文件导入监听器报告中,弹出如下错误提示 ...

  9. 用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity

    用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity MessageBox.show()错误!!容量超出了最大容量.参数名: capacity 解决方案: 设置 skin.SkinDi ...

随机推荐

  1. QTreeView 使用 QStandardItemModel

    QTreeView 使用 QStandardItemModel @ 目录 QTreeView 使用 QStandardItemModel 前言 一.直接上图 二.添加同级结点项 1.思路 2.实现 二 ...

  2. ceph-csi组件源码分析(1)-组件介绍与部署yaml分析

    更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi组件源码分析(1)-组件介绍与部署yaml分析 基于tag v3.0.0 ht ...

  3. 二、RabbitMQ 进阶特性及使用场景 [.NET]

    前言 经过上一篇的介绍,相信大家对RabbitMQ 的各种概念有了一定的了解,及如何使用RabbitMQ.Client 去发送和消费消息. 特性及使用场景 1. TTL 过期时间 TTL可以用来指定q ...

  4. Docker入门与进阶(下)

    Docker入门与进阶(下) 作者 刘畅 时间 2020-11-12 实验主机配置 系统centos7.5 主机名 ip 配置 应用 harbor-master 172.16.1.71 2核4G/60 ...

  5. keycloak~自定义SPI的注入与扩展

    项目结构 自定义SPI注册 1. 直接复制文件方式 docker cp keycloak-service-self-spi.jar keycloak:/opt/ docker cp module-on ...

  6. zset如何解决内部链表查找效率低下

    zset作为有序集合,内部基于跳表或者说索引的方式实现了数据的快速查找.解决了链表查询效率低下的痛点 前言 紧接前文我们学习了Redis中Hash结构.在里面我们梳理了字典这个重要的内部结构并分析了h ...

  7. gitolite安装及配置

    1.客户端(1)使用ssh-keygen命令在当前用户根目录下生成密钥(2)将该密钥远程拷贝到gitserver服务器上:scp ~/.ssh/id_rsa.pub user@ip:/tmp/neu. ...

  8. Sql Server(3)运算符的使用

    where 订货日期 between '2017/10/24' and '2017/10/30'  小的写在前面,大的后面,不可以写反 一:运算符的使用 T-SQL的运算符应用指派运算符算术运算符比较 ...

  9. windows下flutter2.2.3环境搭建

    先上几个必上的网站: 官网: https://flutter.cn/docs/get-started/install/windows 中文资源网(毕竟中文母语,看着轻松): https://flutt ...

  10. python pip install matplotlib安装模块

    python pip install matplotlib安装模块,可附带安装相关的模块 程序运行提示: from . import _imaging as coreImportError: DLL ...