Wie bekomme ich Buchstaben mit Akzenten enthalten, um tatsächlich die Arbeit auf der bash?

Meine bash-installation auf cygwin nicht handhaben akzentuierte Buchstaben richtig. Ich habe versucht, das hinzufügen

set input-meta on    # to accept 8-bit characters
set output-meta on   # to show 8-bit characters
set convert-meta on  # to show it as character, not the octal representation

meinen input rc, aber dieses noch nicht richtig funktioniert. In der Tat, wenn ich Typ

$ echo ù

dann, bevor ich enter drücken, es wird automatisch geändert,

$ echo \303

obwohl die Ausgabe ist Recht, denn ich bekomme

$ echo \303
ù

Bekomme ich das gleiche Ergebnis für anyother akzentuierte Buchstaben. Normalerweise wenn ich eine nicht-italienische Tastatur, und ich benutze autohotkey zu ersetzen Buchstaben mit einem Apostroph nach Sie mit eine akzentuierte Buchstaben. Wenn dies der Fall ist, akzentuierte Buchstaben substituiert mit einem \302, und drucken Sie Müll je nach Buchstabe: druckt eine 3y für eine ù eine ¢ für eine ò, und nichts für everething anderes.

Wie bekomme ich das alles Sinn macht?

EDIT: meine locale-Einstellungen, cygwin-version und terminal sind die folgenden

$ uname -a
CYGWIN_NT-6.1-WOW64 ferdi-Asus 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin
$ locale
LANG=it_IT.UTF-8
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE="it_IT.UTF-8"
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_ALL=
$ tty
/dev/pty1

Bin ich aufrufen, es einfach Klick auf die Cygwin-terminal-link. Es leitet zu

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

Den relevanten Teil des autohotkey-Skript ist die folgende

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
...
::avra'::avrà
::avro'::avrò
...
  • Die Cygwin-version benutzt du, und mit welchem terminal? Was ist die Gebietsschema-Einstellung, d.h. was sind die Werte von LC_ALL, LC_CTYPE und LANG? In jedem Fall convert-meta muss ausgeschaltet sein für nicht-ASCII-Zeichen, um richtig zu arbeiten.
  • Ich bearbeitet meine post zu zeigen, was Sie gefragt haben. Ausschalten convert-meta scheint nicht, etwas zu ändern eigentlich.
  • Non-ASCII-Zeichen funktionieren für mich auch ohne convert-meta, und Sie aufhören zu arbeiten, wenn ich schalten Sie es auf, das ist nicht verwunderlich, blickt man auf die Beschreibung: "Wenn auf "on", "Readline" konvertiert Zeichen mit dem achten bit festlegen, um einen ASCII-Schlüssel-Sequenz durch Strippen das achte bit und indem ein ESC-Zeichen, Konvertierung zu einer meta-Präfix-key-Sequenz. Der Standardwert ist "on"."
  • Nochmal: welches terminal benutzt du? Auch, wie Sie die Berufung auf Sie?
  • Sorry, ich habe nicht bemerkt, Sie gefragt, welche version der terminal-ich war mit. Ich habe es zu der Frage, zusammen mit der Aufruf-link.
  • Haben Sie geprüft ak2 Vorschlag von Dreh-convert-meta off? Ich habe ähnliche Ergebnisse wie die ihrigen, wenn es eingeschaltet ist, und keine Probleme, wenn es ausgeschaltet ist. Wie für Ihre autohotkey Fragen, vielleicht können Sie das Skript?
  • Einstellung off ändert sich nichts. Das Skript ist sehr einfach in der Struktur, aber ziemlich lang. Ich fügte hinzu, ein abstract zu meiner Frage.
  • Ich glaube, dass der Unterschied im Verhalten zwischen diejenigen, die über eingefügt autohotkey und über die Tastatur steigt aus, ein Unterschied in der Kodierung, aber ich glaube, dass ist secundary.
  • Nur für das Protokoll, hier ist eine ausgezeichnete Zusammenfassung der Dinge, die Sie wissen sollten über Unicode.
  • Gibt es irgendeine information, die ich hinzufügen könnte, um die Frage zu machen, mehr leicht zu beantworten? Ich kann sagen, dass einige von Euch enttäuscht sind von mir nicht einen genug, also bitte Sag mir wie ich helfen kann Sie mir helfen.
  • Versuchen Sie Folgendes: (1) " wiederherstellen alle Ihre Eingangs-rc-änderungen und starten Sie Ihr terminal ein, bestätigen Sie, dass locale Erträge it_IT.UTF-8 und gehen auf die mintty Menü - > Optionen > Text Ihr Gebietsschema ist it_IT und dein Zeichensatz ist UTF-8; sichern Sie Ihre aktuellen autohkey - Skript und verwenden, z.B. notepad++, öffnen Sie Ihre autohotkey Skript und konvertieren UTF-8 ohne BOM anstelle von ANSI. Probieren Sie es aus. Wenn fehlgeschlagen, (2) wiederherstellen Sie die gesicherten autohotkey, dann in der mintty Menü ändern Sie die Zeichenkodierung CP1252 (ANSI codepage) für locale it_IT, export LC_ALL=it_IT.CP1252 und versuchen Sie es erneut.

Schreibe einen Kommentar