Skip to main content
 首页 » 编程设计

python之在 python 中使用 requests.post 发送文件名中包含 Unicode 字符的文件

2025年05月04日8zlslch

我需要使用 python 中的请求模块发布一个文件,文件名中包含 unicode 字符。

我正在使用下面的代码:

url = "https://demo.php" 
headers = {'Accept': 'application/vnd.ve.v1.0+json','API': 'aasadadas'} 
file_up = {'filename': open(file_name, 'rb')} 
upload_file_rest =requests.post(url,files=file_up,headers=headers,verify=False) 

使用上面的代码并将文件名作为“指事字.exe”传递时,出现以下异常:

'ascii' codec can't decode byte 0xc2 in position 26: ordinal not in range(128) 

非常感谢任何帮助。

PS:我已经尝试过下面的代码,但它对我不起作用:

file_up = {'filename': open(file_name.encode('utf-8'), 'rb')} 

请您参考如下方法:

唉,您没有发布堆栈跟踪或您使用的是哪个版本的 Python,所以这里涉及一些猜测。我的第一个假设是异常来自试图打开文件的行,而不是来自请求模块内部。

确保在第一行中声明了 python 文件的编码:

# -*- coding: utf-8 -*- 

使用 unicode 常量,或确保您的字符串是 unicode:

filename = u"指事字.txt" 

之后,应该可以打开文件了。此代码段适用于我的计算机(Macbook、Python 2.7.10):

filename = u"指事字.txt" 
f = open(filename, "rb") 
data = f.read() 
print u"%d bytes in %s" % (len(data), filename) 

...我先在当前目录下创建了一个名为“指事字.txt”的文件,里面有几行文字。