我的一位用户问为什么我的应用不支持文件名中的分号。我通过我的代码,似乎Windows函数GetOpenFileName截断任何包含分号的文件名。例如“one; two.wav” - > “一”。
微软表示不允许使用冒号,但不要提及冒号......
http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
他们是否合法?
编辑:..以及如何使用GetOpenFileName()处理文件名中的分号?
OH!,很奇怪 - 文件名是正确的,除了“滚动”到左边。所以“one; two.wav”看起来像“two.wav”,直到我点击它并按左箭头(然后它很好)。所以这不是一个错误,只是奇怪的行为。
答案 0 :(得分:8)
Semicolons are legal in NTFS file paths
使用当前代码页中的任何字符作为名称,包括扩展字符集(128-255)中的Unicode字符和字符,但以下情况除外:
以下保留字符:
- < (小于)
(大于)
- :(冒号)
- “(双引号)
- /(正斜线)
- \(反斜杠)
- | (竖杆或竖管)
- ? (问号)
- (星号)
- 整数值为零,有时也称为ASCII NUL字符。
- 整数表示形式在1到31范围内的字符,但允许使用这些字符的备用流除外。
- 目标文件系统不允许的任何其他字符。
我可以在Win7系统上为文件名添加分号。观察代码,可能是您的代码或第三方代码,它会对意外字符(最明显的是空格)做出奇怪的事情。
答案 1 :(得分:4)
虽然在Windows手册中可能会省略,但分号也是保留字符,例如“dir .dat; .bak”是合法命令。这同样适用于加号字符,例如“copy test1.dat + test2.dat test3.dat”是一个合法的命令。
答案 2 :(得分:2)
True:Windows允许在文件名中使用分号。但是,当您将此类文件刻录到数据CD或DVD光盘时,名称将被截断。这是我在使用头戴Nero版本9时遇到的。
答案 3 :(得分:1)
是的,他们是允许的。只是如果你在命令行中运行它们,你必须在它们中加上引号。
答案 4 :(得分:1)
是。分号是Windows文件名中的合法字符。但是,如果有其他程序遇到问题,我也不会感到惊讶。