VT520 und UTF-8

  • Da die meisten aktuellen Linuxe nur noch UTF-8 im Einsatz haben, habe lange rumprobiert, um an meinem Linux nicht alles zu "zerschießen" und dennoch die deutschen Sonderzeichen zu haben.

    Ich glaub ich hab eine brauchbare Lösung gefunden und wollte sie hier anbieten. Vielleicht hilft es jemanden.


    Zunächst setzt man folgende Variablen in der Sitzung auf dem VT520

    Code
    TERM=vt520
    LANG=de_De.iso8859-1

    Anschließend fehlt noch in der Datei "$HOME/.screenrc"

    Code
    defencoding UTF-8

    Wenn diese Voraussetzungen erledigt sind, wird nun das Programm "screen" im Terminal aufgerufen. Ab hier sollten nun Umlaute ohne Probleme angezeigt und bearbeitet werden können.


    ich hab aus diesem Wissen das folgende in meine .profile geschrieben:

    Code
    # local terminal
    tele="$(tty | sed 's#^/dev/##')"
    if [[ "${tele}" =~ ttyUSB[0-9] || "${tele}" =~ ttyS[0-9] ]]; then
        echo -e "\n\n you are on a serial terminal\n"
        export TERM=vt520
        export LANG=de_DE.iso88591
        stty rows 50 columns 80
    fi
    unset tele

    Der Teil für Screen selbst fehlt mir hier noch! Aber bin unsicher ob der überhaupt dann nötig ist.

    Falls wer weiter Vorschläge hat oder Verbesserungen, immer her damit :)


    Für Tmux habe ich bisher leider keine solche Einstellung gefunden. Vielleicht existiert sie auch, oder es ist nicht ganz so einfach?

    Suche: Sun Ultra 45 | Dolch PAC 65

  • export LANG=de_DE.iso88591

    Hm, ob das jetzt eher Zufall oder Glück ist, dass es so funktioniert (oder zumindest so scheint?)

    Aber ein locale namens de_DE.iso88591 oder de_De.iso8859-1 wie du's in dem anderen Codeblock erwaehnt hast, gibt es eigentlich auf den meisten Systemen nicht.


    Du kannst ja in der /etc/locale.gen mal die Zeile:

    Code
    # de_DE ISO-8859-1

    einkommentieren und dann

    Code
    locale-gen

    ausfuehren.

    Damit sollte er dir dann (mindestens) de_DE.UTF-8 und de_DE.ISO-8859-1 erzeugen:

    Code
    Generating locales (this might take a while)...
      de_DE.UTF-8... done
      de_DE.ISO-8859-1... done
    Generation complete.

    Wenn du dann mit der Schreibweise:

    Code
    export LANG=de_DE.ISO-8859-1

    in deiner Shell unterwegs bist, bin ich relativ zuversichtlich, dass sich die Shell auch ohne extra Umweg durch screen Vernünftig verhält.

    Meine aktuelle Vermutung ist, dass screen prueft, ob "UTF-8" im LANG steht und wenn nicht dann auf latin1/ISO zurueckfaellt.


    Mit dem richtigen Locale klappts aber vermutlich auch ohne Umwege/Tricks.


    Beispiel:

    (mein Terminal ist UTF-8, d.h. die fehlerhaften einzelnen Zeichen bei ISO-8859-1 sind genau so erwartet und sollten so sein :) )

  • Den iso-Zeichensatz musst man natürlich generieren, da UTF-8 nun mal default ist. Wie das geht wollte ich hier nicht breittreten, dachte das würde man im Netz auch finden.


    Ich hatte das Problem natürlich im ersten Schritt auch ohne Screen probiert und dort werden die Umlaute komplett falsch dargestellt. Selbst mit den "LANG=de_De.iso8859-1".

    Die ".profile" stammt nämlich aus diesen Versuchen und wurde seit dem nicht angefasst. Erst mit Screen und auch nur erst nachdem die .screenrc angefasst wurde, war die Darstellung richtig.


    Die VT520 kann nur die ISO8859-X und die DEC-Eigene Zeichsatzdarstellung. UTF-8 ist auf der alten Kiste einfach nicht möglich. Und auf meinem Linux ist alles UTF-8 codiert. Wenn du also mit ISO-Zeichensatz irgendwas verändert hast du später unter dem Linux ein mischmasch an Zeichensetzten. Das ist suboptimal und führt irgendwann zu Frust. Am besten wäre hier eine US-Ansi-Tastatur, so dass man nicht in die Verlegenheit käme diese furchtbaren Zeichen zu tippen ;)

    Da mir eine US-Ansi-Tastatur nicht zur Verfügung stand, ging ich den Umweg mit Screen.

    In deinem Letzten Beispiel zeigst du das auch ganz gut. Du erhältst eben nicht die Umlaute. Am VT520 wirds leider noch schlimmer, da dort mit Backslash escaped wird. Du also noch mehr kaputt machen könntest.


    Meine möglichen LANG-Variablen:

    Suche: Sun Ultra 45 | Dolch PAC 65

  • Ah, du nutzt Gentoo Linux.


    Der Unterschied zwischen meinem de_DE.ISO-8859-1 und dem de_DE.iso88591 bei dir liegt an der Distribution.

    Bei Debian, ArchLinux und Artverwandten wäre ersteres richtig, bei dir ja nun letzteres...

    Zitat

    Wenn du also mit ISO-Zeichensatz irgendwas verändert

    Ja, nun, klar. Das ist Aufgabe deiner Software (also z.B. deines Texteditors), sich um das Encoding von Zeichen zu kuemmern.

    Aber laufen denn mit richtig gesetzter LANG-Variable wenigstens normale Systemtools richtig (und mit Sonderzeichen?)...


    Ich glaube, was dir hier bei der Benutzung deines Systems wirklich helfen würde, wäre der alte "ttyconv":

    Index of /debian/pool/main/t/ttyconv

    Das Teil ist schon etwas in die Jahre gekommen, aber du kannst das zwischen den Getty an deiner TTY und deine Shell setzen.

    Der ttyconv ruft dann iconv auf um das Character-Set so gut wie möglich und transparent zu kodieren.


    Damit könntest du dann auch gefahrlos an Dateien rumeditieren.

  • Danke.

    Bei Zeit werden ich das mit ttyconv mal probieren :)

    Wandelt das so im Background während der Session um?


    PS:

    das Tool lässt alles einfrieren. Vermutlich ist das einfach nicht mehr kompatibel zu aktuellen Systemen. Schade

    Suche: Sun Ultra 45 | Dolch PAC 65

  • Wandelt das so im Background während der Session um?

    Das steckt zwischen getty, shell und deiner eigentlichen Shell.

    also ttyS0 -> getty -> bash (login shell) -> ttyconv (wandelt UTF8->ISO) -> bash (eigentliche Shell)


    Ich hab's gerade auch mal versucht zu nutzen und scheitere leider bereits an Python2.7 als Dependency.

    Das ist in den aktuellen Distros ueberall schon rausgeflogen. Schade, das Tool war praktisch. Muesste man wohl mal auf Python3 aktualisieren.

  • Wäre somit dafür optimal, denke ich. Aber bei Python rumfummeln bin ich erst mal raus.

    Suche: Sun Ultra 45 | Dolch PAC 65