"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Unicode auf Windows Shells & GNU Tools

GrandAdmiralThrawn 02.11.2015 - 12:50 1669 3
Posts

GrandAdmiralThrawn

XP Nazi
Avatar
Registered: Aug 2000
Location: BRUCK!
Posts: 3682
Aaalso, ich hätte eine Frage, und zwar nutze ich für ein paar Dinge auch auf Windows die Shell, also die cmd.exe mit clink Upgrade für GNU readline() Support.

Wie dem auch sei, ich hab auf einem meiner Dateisysteme Ordner die wide chars verwenden, und da der Zeichensatz von NTFS das Urgestein "UCS2-le" sein sollte müßte das im Endeffekt fast das gleiche sein wie UTF-16. Inkl. Anzeige der [Surrogates and Supplementary Characters], die sind bei mir aktiviert.

Jetzt will ich darauf GNU Tools nutzen wie z.b. GNU find oder auch diff. Sobald ich mich aber in einem Ordner befinde, in dem sich derart benannte Subordner oder Dateien befinden meinen diff oder auch find, der aktuelle (übergeordnete) Order würde nicht existieren.

Also nehmen wir an wir haben E:\Data\

Und darin gibt es dann z.B. sowas:

E:\Data\☆☆☆☆\
E:\Data\♪♪♪♪♪♪\
E:\Data\★★★★\
E:\Data\魔法少魔\

Im Windows Explorer funzt das ja auch alles.

Nur auf der Shell hauts es zamm, und dann isses dann auch egal ob ich statt der cmd.exe die PowerShell nutze, wenn ich z.b. folgendes Kommando absetze (find heißt bei mir "gfind.exe" um nicht mit Windows' eigenem find zu kollidieren):

gfind E:\Data\ -iname "*"

Dann kommt sowas zurück:

gfind: E:\Data\: No such file or directory

Microsoft-eigene Konsolentools wie z.B. robocopy funktionieren aber mit dem Klump.

Das kann ja wohl nur irgendein Zeichensatzkonversionsproblem sein? Jetzt wollte ich fragen ob irgendwer weiß wie man das hinbekommt? Was ich noch nicht probiert habe ist es mir eine komplette Bash herzurichten auf Windows, lieber wär mir es würde mit den nativen Shells gehen.

chcp 65000, chcp 65001, chcp 10000 und chcp 10001 (div. Unicode Charsets, UTF-7, 8, 16 usw.) haben auch nichts gebracht, der Zeichensatz der cmd.exe selbst scheint irgendwie keinen Einfluß zu haben?!

Sofern nicht sowieso der Zeichensatz des NTFS Dateisystems mir schon eine reinwürgt. kA wie die Tools da tun.

Ideen?!

Ajo, "installier ein Linux" ist kein gewünschter Lösungsansatz, auch wenn's letzten Endes sicher schlauer wär auf was unixoides zu setzen, aber für sowas hab ich jetzt keine Zeit.

GrandAdmiralThrawn

XP Nazi
Avatar
Registered: Aug 2000
Location: BRUCK!
Posts: 3682
Uäh?

Ich denke ich habe eine passable Lösung gefunden, durch Rausreißen der weit neueren Tools aus CygWin, da kriegt man auch gleich 64-Bit Builds (nicht daß es viel bringen würd).

Die scheinen jedenfalls auch innerhalb der cmd sauber mit den Chars zurechtzukommen, was die alten aus'm GnuWin32 Port offenbar nicht schaffen.

Jetzt erst Mal nachgesehen, und das GnuWin32 Zeug is ja doch auch schon steinalt. Also besser Binaries und nötige DLLs aus CygWin auskoppeln für sowas...

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11899
Ich finde dieses ganze Herumfrickeln auf Windows zwar wirklich verrueckt und unnoetig, aber das hier hat mir das eine oder andere Mal schon gute Dienste geleistet und kann vielleicht auch bei dir cygwin ersetzen: https://github.com/bmatzelle/gow

GrandAdmiralThrawn

XP Nazi
Avatar
Registered: Aug 2000
Location: BRUCK!
Posts: 3682
Ich hab CygWin sowieso drauf, weil ich damit u.a. auch ffmpeg, libav und x264 kompiliere und ein paar andere Sachen mache.

Aber das Gow kannte ich noch nicht, schaut nützlich aus (für Boxen wo eben kein CygWin draufkommt)!

Das und clink zusammen und die cmd is wohl recht flott hinreichend brauchbar. ;)

Danke!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz