我真的很想使用“?”這樣的字元。在 Windows 中為檔案名稱。我明白為什麼它們被保留,但為什麼它們沒有,或者它們是否會通過使用看起來相同但(顯然)具有不同 Unicode 代碼的 unicode 字元來規避這個問題?
我認為完全有可能,但如果不可能,為什麼?
答案1
我認為他們之所以不這樣做是因為有可能引起混亂。如果您有一個看起來像“?”的字符但有不同的 unicode 代碼 - 你如何區分?
你會如何向某人解釋? 「你的檔案名稱中不能有問號,但你可以有一個看起來像問號但不是問號的東西,要輸入它,你只需要使用這個 5 -組合鍵。」?
更好(在我看來)完全排除它們並避免錯誤。
答案2
檔案名稱中不允許使用的字元有:
<
(少於)>
(比...更棒):
(冒號)"
(雙引號)/
(正斜線)\
(反斜線)|
(豎條或豎管)?
(問號)*
(星號)
根據微軟命名約定。
你指的是這個嗎?
原因可能是因為在舊 shell 中處理包含這些字符的文件太困難了command.com
,例如?
也意味著任何一個字符,*
也意味著任何文件等。
他們沒有教導每個人如何處理這些特殊情況,而是禁止這樣做,這使得編寫腳本變得更容易。
這些字元不會有 Unicode 等效項,即使有等效項,也仍然無法解決該問題:現有的 ASCII?
仍然*
必須用作通配符,否則每個人都必須重新編寫腳本。
答案3
您可以使用下面的 Unicode,它看起來與原始的 Unicode 類似,沒有風險
它們作為視窗名稱是有效的:
- «(U+00AB) 代替 <(小於)
- »(U+00BB) 而不是 >(大於)
- ?? (U+0589或 ÷ (U+00F7) 或 ‡ (U+2021) 而不是 :(冒號)
- 「(U+201C) 而不是 " (雙引號)
- ⁄(U+2044) 代替 /(正斜線)
- ∖ (U+2216) 或 \ (U+FF3C) 或 〵 (U+3035) 而不是 \(反斜線)
- ψ (U+00A6) 而不是 | (豎條或豎管)
- ‽U+203D) ⁇ (U+2047) ¿U+00BF) 代替 ? (問號)
- ☀(U+2600) 代替 *(星號)
注意:統一碼表讓您透過描述(如羅馬)、實際字符搜尋字符,並提供其他相關字符(看起來相同)作為參考
請找到下面的有效檔案名稱(複製並貼上來嘗試;在 Windows 7 下使用 Windows 資源管理器工作並正確顯示,抱歉無法新增螢幕截圖)。您會注意到 Windows 下的外觀與瀏覽器內的外觀不同(字型的變更)
unicode 一 ☀ » ։∖ ‡〵 ÷╲ ‽ ⁇ ¿ ‰ ¢ π ∞ « ≈.txt
幾個參考文獻
- www.theasciicode.com.ar/extended-ascii-code/copyright-symbol-ascii-code-184.html
- http://www.theworldofstuff.com/characters/
- http://unicode-table.com/en/#00A9
- http://www.tedmontgomery.com/tutorial/altchrc-a.html
- http://unicode-table.com/en/#enlined-alphanumerics
- https://stackoverflow.com/questions/8086375/what-character-to-use-to-put-an-item-at-the-end-of-an-alphabetic-list
注意:Windows 自 1980 年起就符合 Posix 標準(根據維基百科),因此它確實符合 posix RFC,包括指定檔案名稱的 RFC堆疊交換的答案提供有關 RFC 的更廣泛上下文以及檔案名稱中允許使用哪些字符
答案4
現在您可以自己使用這些字元。但我假設您的意思是讓作業系統自動在 ASCII 問號和類似的字元(如 ﹖ ( SMALL QUESTION MARK
- UFE56))之間進行音譯。我真的不認為這是令人滿意的,特別是因為 Linux 和其他檔案名稱的唯一無效字元是斜線 ( /
) 和 null (ASCII 0),很容易接受這些字元。
延伸閱讀:
- 修復 Unix/Linux/POSIX 檔案名:控製字元(例如換行符)、前導破折號和其他問題
- 維基百科文章關於檔案名稱