我在使用适用于 Windows 的 Safari 浏览器时遇到了一个奇怪的问题。
我有一个基于 jQuery 的 HTML5 拖放上传表单。它适用于除 Safari 之外的所有浏览器,对于具有特定扩展名的文件,文件名在文件扩展名后用非 ascii 字符填充。
例如,文件example.mov变为example.movçðÆê
文件也已损坏:它们似乎没有内容。
这是 Safari 和 jQuery/HTML5 的已知问题吗?有没有办法过滤掉非ASCII字符?
我在使用适用于 Windows 的 Safari 浏览器时遇到了一个奇怪的问题。
我有一个基于 jQuery 的 HTML5 拖放上传表单。它适用于除 Safari 之外的所有浏览器,对于具有特定扩展名的文件,文件名在文件扩展名后用非 ascii 字符填充。
例如,文件example.mov变为example.movçðÆê
文件也已损坏:它们似乎没有内容。
这是 Safari 和 jQuery/HTML5 的已知问题吗?有没有办法过滤掉非ASCII字符?
我不确定这是否有用,就像 Pekka 一样,我不是 100% 了解这里的情况,但如果从字符串中删除“错误”字符就足够了,那么你可以使用正则表达式。这将删除任何不是a-z
,A-Z
或0-9
的字符.
。
filename.replace(/[^a-z0-9\.]+/gi, "");
这可能过于严格(例如,您希望允许使用非英语的文件名,或者您只想去除扩展名后的字符)。假设问题出在 mov 和 pdf 扩展名上,并且您只想从扩展名末尾删除上述字符,您可以使用
filename.replace(/(\.mov|\.pdf)[^a-z0-9\.]+$/i, "$1");