cygwin "Bash Prompt Here" funktioniert nicht mit Umlauten

651
jf1

Die Verwendung des Windows Explorer-Kontextmenüeintrags "Eingabeaufforderung hier", die mit dem cygwin-Paket installiert ist, cherefunktioniert nicht, wenn der Pfad an einer beliebigen Stelle einen deutschen Umlaut enthält. ZB: Wenn Sie es für c:/temp/öErgebnisse in einer Eingabeaufforderung für Bash verwenden c:/temp, wird beim Öffnen einer cmdEingabeaufforderung auch mit Umlauten im Pfad gearbeitet.

Wie löse ich dieses Problem?

Zu Ihrer Information:

  1. erstellter Registry-Eintrag ist c:\opt\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"(im erweiterten Kontextmenü wird "% L" durch "% V" ersetzt; dies funktioniert aber auch nicht)
  2. Ländereinstellung in Cygwin: LANG=de_DE.UTF-8
  3. Dateisystem ist NTFS. Daher wird behauptet, dass Dateinamen in "Unicode" gespeichert werden, was auch immer in der jeweiligen Dokumentation bedeutet ( Windows Dev Center Beschreibung der Verschlüsselung von Dateinamen ).
  4. Codepage im CMD-Fenster: 850 (gemäß Powershell-Befehl [System.Text.Encoding]::Default)
  5. Windows-Codepage: 1252
  6. Alle drei Programme (Windows Explorer, cmd.exe, bash in mintty) zeigen die Umlaute trotz unterschiedlicher Kodierungen konsistent an
  7. Das Umbenennen von Dateien ist nicht möglich, da das Problem hauptsächlich bei Netzlaufwerken mit Ordnern / Dateien auftritt, auf die a) durch viele Links (symbolische sowie Windows-Verknüpfungen) verwiesen wird und b) mehreren unterschiedlichen Benutzern gehören / gemeinsam genutzt werden
0
Was ist das zugrunde liegende Kodierungssystem des Dateisystems? Wie lauten Ihre Ländereinstellungen? tripleee vor 6 Jahren 0

3 Antworten auf die Frage

0
Hannu

Um dieses Problem und alles, was damit zusammenhängt, zu vermeiden.

Verwenden Sie nur Zeichen mit Hex-Code ...

2d, Strich
30-39, Ziffern
41-5a, Großbuchstaben AZ
5f, unterstrichenes Zeichen
61-7a Kleinbuchstaben az

... aus der Tabelle in Dateinamen.

Alles andere wird letztendlich zu Problemen führen, z. B. wenn Sie Dateien zu einem bestimmten Zeitpunkt um verschiedene Betriebssysteme verschieben (... auf Netzwerkfreigaben und tragbaren Festplatten).

--- HEX / DEC-codierte Zeichentabelle --- ECMA-Latin1 - 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: ° ± ² ³ ´ ¸ ¹ »¼ ½ ¾ ¿ 12 / c: À Á Â Å Æ Ç È É Ê Ì Í Î Ï 13 / d: Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß 14 / e: â å æ ë ë ì ì ì î î 15 / f: ð ñ ò ò õ ÷ ø ù ü ý þ ÿ 
Downvote; den Boten erschießen, nicht wahr? ;-) Mach es richtig. Hannu vor 6 Jahren 0
0
tripleee

Wenn die Codepage im CMD-Fenster 850 ist, ist das Zeichen im Dateinamen ein einzelnes Byte, das keine gültige UTF-8-Sequenz ist. Das System könnte möglicherweise eine unbekannte Glyphe anzeigen , aber es ist nicht wirklich seltsam, unerwartet oder merkwürdig, dass es stattdessen überhaupt nichts anzeigt.

Die einfache Lösung besteht darin, es zu ignorieren. Die etwas einfachere Lösung besteht darin, Ihr System überall auf Unicode zu aktualisieren. Benennen Sie alle Dateien um, um die richtigen Unicode-Namen zu erhalten, und richten Sie das CMD-Fenster so ein, dass es auch cp65001 verwendet (keine Windows-Person. Fragen Sie mich nicht, wie. Ich bin nicht sicher, ob Sie auch die Windows-Standard-Codepage ändern müssen).

Danke für den Vorschlag. Ich hätte das zwar auf eigenen Laufwerken gemacht, aber auf Netzwerkfreigaben ist diese Vorgehensweise leider nicht möglich (ergänzte Frage mit dieser Information). jf1 vor 6 Jahren 0
Bei einigen Plattformen können Sie beim Mounten einer Freigabe eine Dateinamenszeichenzuordnung definieren. Ich weiß jedoch nicht, ob Windows dies in irgendeiner Form oder Form unterstützt. tripleee vor 6 Jahren 0
0
jf1

Schließlich bekam ich Hilfe von dem Mintty-Entwickler selbst, der mich freundlicherweise auf die richtige Dokumentation verwies (mintty-wiki: https://github.com/mintty/mintty/wiki/Tips#creating-a-folder-context-menu- Eintritt für die Mintty ). Dementsprechend arbeiten die von chere erstellten Kontextmenüeinträge NICHT mit Nicht-ASCII-Zeichen in Verzeichnisnamen.

Das Problem kann jedoch durch die Angabe eines zusätzlichen Parameters für den Befehl mintty gemildert werden, der die Aufgabe selbst erledigen kann, ohne dass das Skript xhere erforderlich ist. Der Kontextmenüeintrag kann also einfach durch ausgetauscht werden C:\cygwin64\bin\mintty.exe --dir "%1" /bin/bash. Der jeweilige Eintrag funktioniert jetzt einwandfrei.