cygwin“Bash Prompt Here”不使用變音符號

cygwin“Bash Prompt Here”不使用變音符號

當路徑在任何位置包含德語變音符號時,使用與 cygwin 軟體包一起安裝的 Windows 資源管理器上下文功能表條目「此處的 Bash 提示」chere不起作用。例如:使用它來c:/temp/ö開啟在 中開啟的 Bash 提示符c:/temp,同時開啟cmd提示符號也適用於路徑中的變音符號。

我該如何解決這個問題?

供參考:

  1. 建立的註冊表項是c:\opt\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"(在擴展上下文選單中「%L」被「%V」取代;但這也不起作用)
  2. cygwin 中的語言環境設定:LANG=de_DE.UTF-8
  3. 檔案系統為NTFS。因此,文件名被聲稱以“Unicode”存儲,無論這在相應的文檔中意味著什麼(Windows 開發人員中心檔案名稱編碼的說明
  4. CMD 視窗中的代碼頁:850(根據 powershell 指令[System.Text.Encoding]::Default
  5. Windows 代碼頁:1252
  6. 儘管編碼不同,所有三個程式(windows explorer、cmd.exe、mintty 中的 bash)都以一致的方式顯示變音符號
  7. 無法重新命名文件,因為問題主要出現在具有資料夾/文件的網路磁碟機上,這些資料夾/文件 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樓:ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ

相關內容