如何在Windows中使用文件名中的冒号获取文件?

Dav*_*vid 37 unix windows filenames colon

我从上传文件名冒号的客户那里收到错误,即 C:/uploads/test : doc.html

我假设某些Unix或Linux系统正在生成该文件,但我不确定用户如何使用无效的文件名保存它们.我编写了一个应该在上传时重命名文档的部分.我的问题是我无法测试它,因为我无法在Windows上获得文件名中包含冒号的文件.

小智 56

我发现了一个与冒号非常相似的字符,"꞉"它是一个叫做Modifier Letter Colon的unicode字符.它没有像全宽冒号那样的空间,几乎与常规冒号完全相同,但符号有效.您可以从上面复制并粘贴它,也可以使用代码点U + A789

  • 真棒.我一直在追踪这些文件名的unicode替换,所以谢谢!你太棒了.我知道你没有问,但是,对于它的价值,如果你需要一个问号,你可以使用'⁇'代替.(U + 2047).对于斜杠,您可以使用除法斜杠:'/'(U + 2215).也许有人会发现那些有用的. (3认同)

小智 14

冒号是Windows文件名的无效字符.您将无法在文件名中允许":",但您可以解决它.

你可以做你听过的声音; 在UNIX端创建一个用有效字符替换这些无效字符的脚本.或者,您可以使用文件名字符转换在Windows服务器上处理此问题:http://support.microsoft.com/kb/289627


alj*_*gom 8

我为保留字符找到的其他替换是

” ‹ › ? ? ? ?? ? ?

例如在python中你会这样做:

fixed_name = orig_name.replace('\\\\','?')
forbidden_characters = '"*/:<>?\|'
unicode_characters = '”???‹›???'
for a, b in zip(forbidden_characters, unicode_characters):
    fixed_name = fixed_name.replace(a, b)
Run Code Online (Sandbox Code Playgroud)


小智 6

根据您提供的文件名,您的文件名中的字符可能不是文字冒号:,它是 Windows 文件名中的保留字符,而是全角冒号?。它是一个 Unicode 字符,看起来非常像冒号,视觉上被无法删除的空格包围。您可以像处理任何 Unicode 字符一样处理它,代码点是U+FF1A.

  • @vaxquis:相反,我认为这可能确实是 OP 问题的原因;他认为他试图处理的文件名中有冒号,但它们可能是全角冒号。 (3认同)