场景是在nginx+uwsgi+flask时上传文件名为中文时nginx报502错,设置各各地方为utf8后无果,最后妥协了. 解决方案一:拼接+安全检查
def rsafename(s):
"""Ensure user submited string not contains '/' or muti '-'.
Args:
s: submited string
Returns:
replaced slash string
"""
s = re.sub('[" "\/\--.]+', '-', s)
s = re.sub(r':-', ':', s)
s = re.sub(r'^-|-$', '', s)
return s
解决方案2: 转成拼音 pip install pypinyin
from pypinyin import pinyin, lazy_pinyin
filesname = "".join(lazy_pinyin(files.filename))