當路徑在任何位置包含德語變音符號時,使用與 cygwin 軟體包一起安裝的 Windows 資源管理器上下文功能表條目「此處的 Bash 提示」chere
不起作用。例如:使用它來c:/temp/ö
開啟在 中開啟的 Bash 提示符c:/temp
,同時開啟cmd
提示符號也適用於路徑中的變音符號。
我該如何解決這個問題?
供參考:
- 建立的註冊表項是
c:\opt\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"
(在擴展上下文選單中「%L」被「%V」取代;但這也不起作用) - cygwin 中的語言環境設定:
LANG=de_DE.UTF-8
- 檔案系統為NTFS。因此,文件名被聲稱以“Unicode”存儲,無論這在相應的文檔中意味著什麼(Windows 開發人員中心檔案名稱編碼的說明)
- CMD 視窗中的代碼頁:850(根據 powershell 指令
[System.Text.Encoding]::Default
) - Windows 代碼頁:1252
- 儘管編碼不同,所有三個程式(windows explorer、cmd.exe、mintty 中的 bash)都以一致的方式顯示變音符號
- 無法重新命名文件,因為問題主要出現在具有資料夾/文件的網路磁碟機上,這些資料夾/文件 a) 由大量連結(符號以及 Windows 捷徑)引用,b) 由多個不同使用者擁有/共享
答案1
如果 CMD 視窗中的代碼頁是 850,則檔案名稱中的字元是單一位元組,而不是有效的 UTF-8 序列。系統可能會顯示未知字形 �但它什麼也不顯示,這並不奇怪、出乎意料或奇怪。
簡單的修復方法就是忽略它。稍微不那麼簡單的修復方法是將系統各處升級為 Unicode。將所有檔案重新命名為正確的 Unicode 名稱,然後將 CMD 視窗設定為也使用 cp65001(不是 Windows 用戶,所以不要問我如何操作。我不確定您是否還需要更改 Windows 預設代碼頁)。
答案2
最後,我最終得到了 mintty 開發人員本人的幫助,他好心地向我指出了正確的文檔(mintty-wiki:https://github.com/mintty/mintty/wiki/Tips#creating-a-folder-context-menu-entry-for-mintty)。根據 chere 建立的上下文選單項目不適用於目錄名稱中的非 ASCII 字元。
不過,只需向 mintty 命令提供一個附加參數即可緩解該問題,該命令可以自行處理任務,而不需要 xhere 腳本。因此上下文選單項目可以透過 進行交換C:\cygwin64\bin\mintty.exe --dir "%1" /bin/bash
。相應的條目現在工作得很好。
答案3
為了避免這個問題以及與之相關的任何問題。
僅使用帶有十六進位代碼的字元...
2d、破折號
30-39、數字
41-5a、大寫 AZ
5f、底線字元
61-7a 小寫 az
...來自下表中的檔案名稱。
其他任何事情最終都會成為麻煩的根源,例如,如果您有時在不同作業系統之間移動檔案(...在網路共用和便攜式磁碟上)。
--- HEX/DEC 編碼字元表 --- ECMA-拉丁文 1 ~ ISO 8859-1 0 1 2 3 4 5 6 7 8 9 abcdef - - - - - - - - - - - - - - - - 2/2:! " # $ % & ' ( ) * + , - ./ 3/3: 0 1 2 3 4 5 6 7 8 9 : ; ? 4/4:@ABCDEFGHIJKLMNO 5/5: PQRSTUVWXYZ [ \ ] ^ _ 6/6:` abcdefghijklmno 7/7: pqrstuvwxyz { | } ~ 8/8: 9/9: 10/a: ¡ 11/b: ° ± 2 3 ´ µ ¶ · ¸ 1 º » 4 1/2 3 ¿ 12/c: À Á à à Å Æ Ç È É Ê Ë Ì Í Î Ï 13/d:Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß 14/e: à á â ã ä å æ çè é ê ë ì í î ï 15樓:ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ