这个问题与this one有关.
请阅读克里斯在那里描述的问题。我将缩小范围:如果文件名是 utf-8 编码的并且包含不在非 unicode 程序支持范围内的字符,则会出现 CURL 错误 26。
让我解释一下:
local_filename = filename.encode("utf-8")
self.curl.setopt(self.curl.HTTPPOST, [(field, (self.curl.FORM_FILE, local_filename, self.curl.FORM_FILENAME, local_filename))])
我将 Windows 7 的俄语设置为非 unicode 程序的语言。如果我不将文件名编码为 utf-8(并将 filename
而不是 local_filename
传递给 pycurl(,如果文件名包含英语或俄语字符,一切都会完美无缺。但是例如,如果有一个 à, — 它会抛出错误 26。如果我传递 local_filename
(因此编码为 UTF-8),甚至不允许使用俄语字符。
你能帮忙吗?谢谢!
最佳答案
这很容易回答,很难解决:
pycurl 使用 libcurl 进行表单发布。 libcurl 使用普通的 fopen() 打开文件进行发布。因此,您需要告诉 libcurl 它应该打开并从本地文件系统读取的确切文件名。
关于python - Pycurl:上传具有 UTF-8 文件名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16993637/