Unicode-basierte POSIX-Tools (außer Cygwin) für Windows?

1456
Mehrdad

GNU Win32 und MSYS sind großartig, aber es scheint, als würden all ihre Tools die ANSI-Version der Windows-API anstelle der Unicode-Versionen verwenden.

Offensichtlich sind diese für Windows 95 und 98 gedacht, nicht für Windows XP und Windows 7 ... und sie verursachen viele Probleme mit untypischen Dateinamen, Zeichenfolgen usw.

Gibt es einen ähnlichen POSIX - Toolset ( andere als Cygwin), die verwendet die Unicode - Versionen des Windows - API (und die damit unterstützt Unicode)?

3
Warum Cygwin ausschließen? Beachten Sie auch, dass MSYS eine Abspaltung von Cygwin ist. ak2 vor 12 Jahren 0
Zur Verdeutlichung können Sie ein Beispiel für einen atypischen Dateinamen und eine atypische Zeichenfolge sowie das jeweils auftretende Problem angeben. RedGrittyBrick vor 12 Jahren 0
@ ak2: Ich schließe Cygwin aus, weil ich nicht nach Cygwin suche. Die Tatsache, dass MSYS eine Abspaltung von Cygwin ist, stört mich nicht wirklich. Mehrdad vor 12 Jahren 0
@RedGrittyBrick: Wenn Sie eine Datei mit dem Namen "╧.txt" benennen und dann in MSYS "ls" ausführen, wird "ls: -.txt: Keine solche Datei oder Verzeichnis" angezeigt Mehrdad vor 12 Jahren 0
Ich habe gerade "touch ╧.txt" in einer Cygwin-Bash-Shell ausgeführt, und es wird mit dem richtigen Namen in Cygwin `ls` unter` xterm`, in der Windows-Eingabeaufforderung und im Windows-Explorer angezeigt. (Das sieht unter der standardmäßigen Cygwin-Bash-Shell, die denselben Terminal-Emulator wie die Windows-Eingabeaufforderung verwendet, nicht richtig aus.) Es könnte hilfreich sein, wenn Sie wissen, * warum * Sie "nicht nach Cygwin suchen". Keith Thompson vor 12 Jahren 1
@KeithThompson: * Ein * Grund (von * vielen *) ist, dass es lächerlich langsam ist. Aber ich möchte lieber nicht in diese Richtung gehen ... Ich vermeide Cygwin nur, weil es meinen Bedürfnissen nicht entspricht. Mehr Informationen nicht erforderlich. Mehrdad vor 12 Jahren 0
@Mehrdad: Mein Punkt ist, dass wir wissen, warum Sie Cygwin vermeiden wollen, uns etwas über Ihre Bedürfnisse erzählen kann. Soweit ich das beurteilen kann, entspricht Cygwin Ihren Bedürfnissen *, wie Sie sie bisher angegeben haben *. (Ich habe nicht gemerkt, dass dies besonders langsam ist, aber ich habe in Cygwin keine leistungsabhängigen Arbeiten ausgeführt.) Keith Thompson vor 12 Jahren 0
@KeithThompson: Was die Frage angeht, ist es ganz einfach: Ich brauche ein Unicode-unterstützendes POSIX-Toolset (wie MinGW, UWIN, GnuWin32 oder was auch immer) *, das nicht Cygwin * ist. Ich bin mir ziemlich sicher, dass das kristallklar ist. Ich werde nicht weiter über die Feinheiten diskutieren, warum ich Cygwin nicht verwenden kann / kann. Wenn Sie also nicht weiter fragen, würde ich es wirklich zu schätzen wissen. Vielen Dank! Mehrdad vor 12 Jahren 0
@Mehrdad: Wenn Sie keine Informationen bereitstellen möchten, bin ich froh, dass ich Ihnen nicht helfen möchte. Keith Thompson vor 12 Jahren 0
@KeithThompson: Nun, Sie können es in jeder Hinsicht so behandeln, als ob mein Arbeitgeber Cygwin bei der Arbeit verboten hat und meine Diskussion verboten hat, warum ich es nicht verwenden kann. Ich will ihn nicht darum kämpfen. Wenn Sie immer noch nicht helfen können, ist das völlig in Ordnung. Danke, dass Sie es trotzdem versuchen. Mehrdad vor 12 Jahren 1
@Mehrdad: Wenn Sie * keine * Informationen zur Verfügung stellen können, ist das eine andere Geschichte. Das war mir aus der ursprünglichen Frage oder aus Ihren vorherigen Kommentaren nicht klar. Ich schlage vor, dass etwas wie "Ich kann Cygwin nicht aus Gründen verwenden, die ich nicht offenlegen kann" in der Frage nützlich gewesen wäre. Um zu klären, wäre MSYS in Ordnung, wenn es funktioniert hätte? Keith Thompson vor 12 Jahren 1
@KeithThompson: Ja, MinGW / MSYS und GnuWin32 (und wahrscheinlich andere) wären gut, wenn sie funktionieren würden. Mehrdad vor 12 Jahren 0

2 Antworten auf die Frage

2
ak2

Microsofts eigenes Subsystem für Unix-Anwendungen (SUA). Nur bei Windows Ultimate und Enterprise verfügbar.

Korrektur : SUA unterstützt keine Unicode-Unterstützung. Laut seinem locale -aBefehl unterstützt es nur ISO-8859-1, EUC-JP und SJIS.

In einem verwandten Hinweis unterstützt MKS Toolkit, eine andere Unix-artige Umgebung für Windows, Unicode in Dateinamen entsprechend seiner Unicode.5- Manpage nicht.

MKS Toolkit-Dienstprogramme können nicht-OEM-Zeichen in Dateinamen verarbeiten, es sei denn, das Gebietsschema unterstützt Doppelbyte-Zeichen (z. B. das japanische Gebietsschema). Obwohl die Dienstprogramme UTF-8- und Unicode-Zeichen in Dateien auf allen Plattformen unterstützen, sollten alle Dateinamen, die in Skripts für Dienstprogramme wie awk, sh, csh und andere verwendet werden, nur ASCII-Zeichen enthalten, um eine maximale Portabilität auf allen Windows-Plattformen zu erreichen die OEM-Codepage.

Ja, ich wusste bereits, dass es existierte, versuchte aber nicht einmal herauszufinden, ob es Unicode ist, da ich kein Ultimate / Enterprise habe. +1 trotzdem. Mehrdad vor 12 Jahren 0
Sind Sie wirklich sicher, dass es Unicode unterstützt? Ich habe gerade in der Windows XP-Version "ls" an einer Datei mit dem Namen "╧" ausprobiert und "ls: -: Keine solche Datei oder Verzeichnis" zurückbekommen. Mehrdad vor 12 Jahren 0
Nein, Sieht so aus, als hätten Sie sich geirrt. Ich habe gerade die Windows 8-Version ausprobiert und `ls` gab als Dateinamen` -` zurück (diesmal jedoch kein Fehler). Ich leitete die Ausgabe in eine Textdatei, schaute den Inhalt an und vergewisserte mich, dass es sich nicht um ein Problem mit der Konsole handelte. Mehrdad vor 12 Jahren 0
Entschuldigung, ich habe mich daran erinnert. SUA verwendet den privaten Unicode-Verwendungsbereich, um Zeichen wie ':' darzustellen, die in Windows-Dateinamen nicht zulässig sind, genauso wie bei Cygwin. Ich vermute, dass ich falscherweise angedeutet habe, dass es allgemeine Unicode-Unterstützung hat. ak2 vor 12 Jahren 0
Denken Sie daran, dass die * Windows-Konsole * (das Äquivalent eines Terminalfensters) einige Probleme bei der Unterstützung von Unicode hat - sie wird standardmäßig in einer OEM-Codepage gestartet, und das Umschalten auf UTF-16 oder UTF-8 (chcp 65000 oder 65001) unterbricht. Es ist nicht immer die Schuld des Programms, auch wenn Unicode-APIs verwendet werden, kann es nicht immer Unicode-Zeichen auf der Konsole anzeigen. Verwenden Sie einen ausführbaren Inspektor, um zu überprüfen, welche Art von APIs das Programm verwendet. grawity vor 12 Jahren 0
@grawity: Wie ich schon erklärt habe, das ist genau ***, weshalb ich die Ausgabe auch in eine andere Datei geleitet habe und dann das Ergebnis dort untersucht habe ... Mehrdad vor 12 Jahren 0
0
Jason Chiang

Ich würde Ihnen empfehlen, UTF-8 Cygwin ( http://www.oki-osk.jp/esc/utf8-cygwin/ ) für die Kompatibilität mit utf8 auszuprobieren .

Ich habe DeltaCopy verwendet, das auf cygwin basiert (wenn es mit cygwin1.dll geliefert wird). Es gab Probleme beim Umgang mit dem chinesischen Dateinamen (Multibyte-Zeichen in Dateiname und Ordnername)

Nachdem ich die Datei cygwin1.dll in "UTF-8 Cygwin" -Version ersetzt habe. Alle Unicode-Dateien, die ich mit dem Server synchronisiere, werden korrekt auf den Server hochgeladen.

Dies ist eine sehr einfache Lösung, da "UTF-8 Cygwin" Statistiken enthält, die sich mit Unicode-Zeichen befassen, jedoch die Binärkompatibilität mit dem aktuellen Cygwin beibehalten.