参数包含 & 时编码错误

Encoding error when argument contains &

我正在通过网络表单提交文件名,让 cherrypy 接收此文件名并打开它进行处理。我遇到的问题是当文件包含“&”时出现以下错误。 从文件名

中删除“&”时我没有遇到任何问题

文件名:

invoicing - SP30075306 Heidelberg Dust & Dropper.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'))

错误打印输出:

invoicing - SP30075306 Heidelberg Dust

[Errno 2] No such file or directory: u'C:/Users/rihanio/Dropbox/Projects/Python_code/work/gateway/Temp_Project_Files/temp_invoicing\invoicing - SP30075306 Heidelberg Dust '

我已经通过在发送到 python 之前在网络表单端对文件名进行编码来解决这个问题。

encodeURIComponent(file.name)

$.ajax({url: '/cost_breakdown?sp=&wo=&pm=' +cookie_read +'&contract=' +contract +'&file=' +encodeURIComponent(file.name),