久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Python如何解決secure_filename對中文不支持問題

瀏覽:140日期:2022-06-15 08:21:20
目錄一、最近使用secure_filename發(fā)現(xiàn)的問題二、后面找到了原因三、解決方案四、效果展示

前言:最近使用到了secure_filename,然后悲劇的發(fā)現(xiàn)中文居然不展示出來,于是我慢慢的debug,終于找到問題了。

一、最近使用secure_filename發(fā)現(xiàn)的問題

文件名是中文版的,悲劇的是中文以及其他特殊字符會被省略。

Python如何解決secure_filename對中文不支持問題

二、后面找到了原因

原來secure_filename()函數(shù)只返回ASCII字符,非ASCII字符會被過濾掉。

三、解決方案

找到secure_filename(filename)函數(shù),修改它的源代碼。

secure_filename(filename)函數(shù)源代碼:def secure_filename(filename: str) -> str: r'''Pass it a filename and it will return a secure version of it. This filename can then safely be stored on a regular file system and passed to :func:`os.path.join`. The filename returned is an ASCII only string for maximum portability. On windows systems the function also makes sure that the file is not named after one of the special device files. >>> secure_filename('My cool movie.mov') ’My_cool_movie.mov’ >>> secure_filename('../../../etc/passwd') ’etc_passwd’ >>> secure_filename(’i contain cool xfcmlxe4uts.txt’) ’i_contain_cool_umlauts.txt’ The function might return an empty filename. It’s your responsibility to ensure that the filename is unique and that you abort or generate a random filename if the function returned an empty one. .. versionadded:: 0.5 :param filename: the filename to secure ''' filename = unicodedata.normalize('NFKD', filename) filename = filename.encode('ascii', 'ignore').decode('ascii') for sep in os.path.sep, os.path.altsep:if sep: filename = filename.replace(sep, ' ') filename = str(_filename_ascii_strip_re.sub('', '_'.join(filename.split()))).strip('._' ) # on nt a couple of special files are present in each folder. We # have to ensure that the target file is not such a filename. In # this case we prepend an underline if (os.name == 'nt'and filenameand filename.split('.')[0].upper() in _windows_device_files ):filename = f'_{filename}' return filename

secure_filename(filename)函數(shù)修改后的代碼:

def secure_filename(filename: str) -> str: r'''Pass it a filename and it will return a secure version of it. This filename can then safely be stored on a regular file system and passed to :func:`os.path.join`. The filename returned is an ASCII only string for maximum portability. On windows systems the function also makes sure that the file is not named after one of the special device files. >>> secure_filename('My cool movie.mov') ’My_cool_movie.mov’ >>> secure_filename('../../../etc/passwd') ’etc_passwd’ >>> secure_filename(’i contain cool xfcmlxe4uts.txt’) ’i_contain_cool_umlauts.txt’ The function might return an empty filename. It’s your responsibility to ensure that the filename is unique and that you abort or generate a random filename if the function returned an empty one. .. versionadded:: 0.5 :param filename: the filename to secure ''' filename = unicodedata.normalize('NFKD', filename) filename = filename.encode('utf8', 'ignore').decode('utf8') # 編碼格式改變 for sep in os.path.sep, os.path.altsep:if sep: filename = filename.replace(sep, ' ') _filename_ascii_add_strip_re = re.compile(r’[^A-Za-z0-9_u4E00-u9FBFu3040-u30FFu31F0-u31FF.-]’) filename = str(_filename_ascii_add_strip_re.sub(’’, ’_’.join(filename.split()))).strip(’._’) # 添加新規(guī)則 # on nt a couple of special files are present in each folder. We # have to ensure that the target file is not such a filename. In # this case we prepend an underline if (os.name == 'nt'and filenameand filename.split('.')[0].upper() in _windows_device_files ):filename = f'_{filename}' return filename四、效果展示

我們很清楚的看到了效果,目前是支持中文的

Python如何解決secure_filename對中文不支持問題

到此這篇關于Python如何解決secure_filename對中文不支持問題的文章就介紹到這了,更多相關Python secure_filename不支持中文內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产情品 | 在线观看国产精品一区 | 精品乱子伦一区二区三区 | 久久一区二区三区四区五区 | 国产日韩欧美综合 | 欧美一区二区三区在线观看视频 | 男人的天堂在线视频 | 综合网视频 | 中国大陆高清aⅴ毛片 | 精品久久久久一区二区国产 | 国产91在线播放精品91 | 日韩在线视频中文字幕 | 成人免费视频观看视频 | 天天夜夜操 | 特级a做爰全过程片 | 午夜a级理论片915影院 | 亚洲国产精品一区二区久久 | 成人免费av| 久久久精品久久 | 九九视频这里只有精品 | 国产精品高潮呻吟久久av黑人 | 成人免费视频网站在线观看 | 久久国产综合 | 日韩视频一区在线观看 | www国产精品 | 9久久精品 | 久久亚洲国产精品 | 亚洲精品无 | 免费精品 | 综合久久综合久久 | 欧美精品理论片大全 | 成人国产 | 天堂久久爱资源站www | 欧美激情国产日韩精品一区18 | 东北一级毛片 | 国产精品综合一区二区 | 亚洲高清视频在线 | 久久精品国产精品 | 日本中文字幕一区 | 午夜精品久久久久久久男人的天堂 | 国内成人免费视频 |