Python 参数包含&;时出现编码错误;

Python 参数包含&;时出现编码错误;,python,encoding,cherrypy,Python,Encoding,Cherrypy,我通过网络表单提交了一个文件名,并让cherrypy接收这个文件名并打开它进行处理。我在这里遇到的问题是,当文件包含“&”时,我会出现以下错误。 从文件名中删除“&”时没有问题 文件名: 发票-SP30075306海德堡灰尘和滴管.xlsm Python代码: reload(sys) sys.setdefaultencoding('utf8') @cherrypy.expose def cost_breakdown(self, **mate): print mate['file']

我通过网络表单提交了一个文件名,并让cherrypy接收这个文件名并打开它进行处理。我在这里遇到的问题是,当文件包含“&”时,我会出现以下错误。 从文件名中删除“&”时没有问题

文件名:

发票-SP30075306海德堡灰尘和滴管.xlsm

Python代码:

reload(sys)  
sys.setdefaultencoding('utf8')

@cherrypy.expose
def cost_breakdown(self, **mate):
    print mate['file'].encode('UTF8')
    offer_path = os.path.join('C:/Users/rihanio/Dropbox/Projects/Python_code/work/gateway/Temp_Project_Files/temp_invoicing', mate['file'].encode('UTF8'))
打印输出错误:

reload(sys)  
sys.setdefaultencoding('utf8')

@cherrypy.expose
def cost_breakdown(self, **mate):
    print mate['file'].encode('UTF8')
    offer_path = os.path.join('C:/Users/rihanio/Dropbox/Projects/Python_code/work/gateway/Temp_Project_Files/temp_invoicing', mate['file'].encode('UTF8'))
发票-SP30075306海德堡灰尘

[Errno 2]没有这样的文件或目录: u'C:/Users/rihanio/Dropbox/Projects/Python\u code/work/gateway/Temp\u Project\u Files/Temp\u invoicing\invoicing -SP30075306海德堡灰尘'


我通过在发送到python之前在webform端对文件名进行编码来解决这个问题

encodeURIComponent(file.name)


&
字符作为URL中的字段分隔符具有特殊意义,应编码为
%26
代码格式有点不正确。任何编码建议实际上,您应该编码所有get参数。我建议您使用来封装这个。