如何使用 Requests 发送具有 unicode 名称的文件

How to send a file with unicode name using Requests

我正在尝试使用 Requests 库在 Mac 上使用 Python 3.4 对 Slack 进行 POST 调用(OS X 10.10),像这样:

url = 'https://slack.com/api/files.upload'
with open('File β.txt', 'rb') as file:
    r = requests.post(url, files={'file': file}, params={
        'token': api_token,
        'channels': channel
    })

但后来我收到了 Slack 的 "no_file_data" 回复。如果我使用 ASCII "B" 字符而不是 unicode beta,那么它工作正常。

我的文件是 UTF-8 编码的,我的 hashbang 下面有一行:

# -*- coding: UTF-8 -*-

这是 Slack 的问题,还是我在 Python 中做错了什么?

事实证明这是 Slack 的网络 API 实施的问题,它不支持 RFC 5987bis. I was helped along to this conclusion by some helpful members of the Requests team on a GitHub issue thread

错误修复后我会更新此答案。