为什么文件系统保留字符不使用 Unicode?

为什么文件系统保留字符不使用 Unicode?

我真的很想在 Windows 中使用“?”这样的字符作为文件名。我理解为什么这些字符被保留,但为什么他们没有,或者他们会通过使用看起来相同但(显然)具有不同 Unicode 代码的 Unicode 字符来规避这个问题?

我认为完全有可能,但如果不可能,为什么?

答案1

我认为它们不这样做的原因是可能会引起混淆。如果你有一个看起来像“?”的字符,但有不同的 unicode 代码 - 你如何区分它们?

你会如何向别人解释呢?“你的文件名中不能有问号,但你可以有一个看起来像问号但实际上不是问号的东西,而要输入它,你只需要使用这个 5 键组合。”?

更好的是(在我看来)将它们完全排除并避免错误。

答案2

文件名中不允许使用的字符包括:

  • <(少于)
  • >(比...更棒)
  • :(冒号)
  • "(双引号)
  • /(正斜杠)
  • \(反斜杠)
  • |(垂直杆或管道)
  • ?(问号)
  • *(星号)

根据Microsoft 命名约定

这就是你指的吗?

原因可能是因为在旧 shell 中处理包含这些字符的文件太难了command.com,例如?也意味着任何一个字符,*也意味着任何文件,等等。

他们没有教每个人如何处理这些特殊情况,而是禁止这样做,以便更容易编写脚本。

这些字符没有 Unicode 等效字符,即使有等效字符,也仍然无法解决该问题:现有的 ASCII?仍然*必须作为通配符使用,否则每个人都必须重写他们的脚本。

答案3

您可以使用以下与原始 Unicode 相似的 Unicode,没有任何风险

它们作为窗口名称有效:

注意:Unicode 表让您按描述搜索字符(如罗马字符)、实际字符,并提供其他相关字符(看起来相同)作为参考

请在下方找到有效的文件名(复制并粘贴以试用;在 Windows 7 下使用 Windows 资源管理器可正确显示,抱歉无法添加屏幕截图)。您会注意到,在 Windows 下的外观与在浏览器中的外观不同(字体变化)

unicode 一 ☀ ¦ » ։∖ ‡〵 ÷╲ ‽ ⁇ ¿ ‰ ¢ π ∞ « ≈.txt


参考文献

  1. www.theasciicode.com.ar/extended-ascii-code/copyright-symbol-ascii-code-184.html
  2. http://www.theworldofstuff.com/characters/
  3. http://unicode-table.com/en/#00A9
  4. http://www.tedmontgomery.com/tutorial/altchrc-a.html
  5. http://unicode-table.com/en/#enclosed-alphanumerics
  6. https://stackoverflow.com/questions/8086375/what-c​​haracter-to-use-to-put-an-item-at-the-end-of-an-alphabetic-list

注意:Windows 自 1980 年起就符合 Posix 标准(根据维基百科),因此它确实符合 posix RFC,包括指定文件名的 RFC。在 stack exchange 上回答提供有关 RFC 的更广泛的背景信息以及文件名中允许使用的字符

答案4

您现在可以自己使用这些字符。但我假设您的意思是让操作系统自动在 ASCII 问号(例如)和 ﹖(SMALL QUESTION MARK-UFE56)等相似字符之间进行音译。我真的不认为这令人满意,尤其是因为 Linux 和其他操作系统(其中文件名的唯一无效字符是斜杠 ( /) 和空字符 (ASCII 0))很容易接受这些字符。

进一步阅读:

相关内容