我的一个用户问为什么我的应用程序不支持文件名中的分号。我仔细检查了我的代码,Windows函数 GetOpenFileName 似乎截断了任何包含分号的文件名。例如,“一个; two.wav”->“one”。
微软说不允许使用冒号,但它没有提到分号...
Naming Files, Paths, and Namespaces
他们法律的还是不合法?
如何让GetOpenFileName()在文件名中使用分号?
哦!奇怪;文件名是正确的,除了‘滚动’到左边。因此,“one;two.wav”看起来像“two.wav”,直到我单击它并按下左箭头(然后就没事了)。所以这不是一个bug,只是奇怪的行为。
5条答案
按热度按时间vc9ivgsu1#
Semicolons are legal in NTFS file paths。
使用当前代码页中的任何字符作为名称,包括Unicode字符和扩展字符集(128-255)中的字符,但以下字符除外:
以下保留字符:
<
(小于)>
(大于):
(冒号)"
(双引号)/
(正斜杠)\
(反斜杠)|
(竖条或管道)?
(问号)*
(星号)我能够在我的Windows 7系统上为文件名添加分号。注意代码,可能是你的代码或第三方代码,它们会使用意外的字符(最明显的是空格)执行奇怪的操作。
ws51t4hk2#
虽然在Windows手册中可能会省略分号,但它也是一个保留字符,例如“dir .dat;.巴克”是法律的命令。这同样适用于加号字符,例如“copy test1.dat+test2.dat test3.dat”是法律的命令。
toiithl63#
True:Windows允许在文件名中使用分号。但是,当您将此类文件刻录到数据CD或DVD光盘时,名称会被截断。这是我在使用aHead Nero版本9时遇到的。
dgtucam14#
是的,他们被允许。只是如果你在命令行中运行它们,你必须在它们里面加上引号。
oiopk7p55#
可以。分号是Windows文件名中的法律的字符。不过,如果其他程序也有问题,我也不会感到惊讶。