python - Pycurl:上传具有 UTF-8 文件名的文件

标签 python curl unicode utf-8 pycurl

这个问题与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/

相关文章:

javascript - 我应该使用什么来访问带有参数的远程 URL 并在代码中使用响应?

javascript - 浏览器中cookie存储的编码方案

java - 通过 JDBC-ODBC 从 Access 数据库读取 Unicode 字符

python - 美国格式的电话号码到 Python 中的链接

json - 使用 bash 脚本在超过硬盘大小时自动清除 Elasticsearch 索引

windows - curl 将下载放在哪里?

unicode - "?"运算符在 Elixir 中做什么?

python - 正则表达式 Python

python - 单元测试导入错误 : "No module named ..." from local libary

python - pyzmq 应该使用哪种协议(protocol)?