如何删除不安全字符以保存文件[重复]
Posted
技术标签:
【中文标题】如何删除不安全字符以保存文件[重复]【英文标题】:How to remove unsafe characters to save file [duplicate] 【发布时间】:2011-07-23 14:55:39 【问题描述】:我想保存一个具有最有效字符保持不变的名称的文件,f.e.如果我得到文件名:
>This\ Ăwesomé_Song?©.mp3
我想将其保存在Windows 7
下,直到我删除>
、\
和?
后才允许我保存它。字符Ă
、©
和é
完全没问题,我想保持它们完好无损(而不是只通过ASCII
过滤器运行所有内容)。
我不知道允许哪些字符 f.e.在Unix
等下,但我希望它能够独立于平台工作。我解决这个问题的方法是实现一个字符串列表,每个字符串都包含一类字符,从最恶毒(fe ?
)到最无害(fe 字母a
)排列,然后逐个字符串地将它们敲掉直到我得到一个可以保存的文件名。
语言是Python
,谢谢!
【问题讨论】:
***.com/questions/295135/… 是一个非常相似的问题。看看 【参考方案1】:>>> import re
>>> print re.sub(r'[\\/:"*?<>|]+', "", "This\ Ăwesomé_Song?©.mp3")
This Ăwesomé_Song©.mp3
>>>
【讨论】:
我能够轻松地为 Groovy 调整这个解决方案(并根据自己的需要处理一些额外的字符): filename = filename.replaceAll(~/[\\/:"*?| # ,]+/, '-')【参考方案2】:在 posix 中,仅保留两个八位字节,正斜杠(/
, 0x2F, dec 42)和 null(\0
, 0x00, dec 0)。任何其他字符都可以出现在文件名中。
【讨论】:
【参考方案3】:您可以使用this 问题中的此模式来列出所有有效字符:
>>> import string
>>> valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
然后手动检查您的文件名。
【讨论】:
以上是关于如何删除不安全字符以保存文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Yii 框架里 Yii::app()->request->getParam();这种方法获取到的get post参数有没有过滤不安全字符的功能?