semi colons in Windows filenames?

喜你入骨 提交于 2019-12-10 16:06:07

问题


One of my users asked why my app does not support semi-colons in filenames. I stepped through my code, seems Windows function GetOpenFileName truncates any filename containing a semi-colon. e.g. "one;two.wav" -> "one".

Microsoft says colons are not allowed, but don't mention semi-colons...

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Are they legal or not?

EDIT: ..and how to GetOpenFileName() to work with semi-colons in filename?

OH!, Weird - Filename is correct, except 'scrolled' off to the left. So "one;two.wav" looks like "two.wav" until I click it and press left-arrow (then it's fine). So it's not a bug as such, only weird behaviour.


回答1:


Semicolons are legal in NTFS file paths.

Use any character in the current code page for a name, including Unicode characters and characters in the extended character set (128–255), except for the following:

The following reserved characters:

  • < (less than)
  • (greater than)

  • : (colon)
  • " (double quote)
  • / (forward slash)
  • \ (backslash)
  • | (vertical bar or pipe)
  • ? (question mark)
  • (asterisk)
  • Integer value zero, sometimes referred to as the ASCII NUL character.
  • Characters whose integer representations are in the range from 1 through 31, except for alternate streams where these characters are allowed.
  • Any other character that the target file system does not allow.

I'm able to add semicolons to filenames on my Win7 system. Watch for code, probably yours or third-party code, that does strange things with unexpected characters (most notably spaces).




回答2:


Though it may be omitted in the Windows handbooks, the semicolon is a reserved character too, for example "dir .dat;.bak" is a legal command. The same applies to the plus character, for example "copy test1.dat+test2.dat test3.dat" is a legal command.




回答3:


True: Windows allows a semicolon in file names. But when you burn such files to a data CD or DVD disc, the names get truncated. This I experienced when using aHead Nero version 9.




回答4:


Yes, they are allowed. Just that if you are running them in the command line you have to put quotes within them.




回答5:


Yes. A semi-colon is a legal character in a Windows file-name. It wouldn't surprise me, though, if there were other programs that had a problem with them.



来源:https://stackoverflow.com/questions/3869594/semi-colons-in-windows-filenames

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!