Studieren in Chemnitz. Wissen, was gut ist.





Informationen zur neuen Textzeichenkodierung in Unicode

Allgemeines

Was ist Unicode und warum wird er eingeführt?

Jedes Textzeichen muss zur Verarbeitung im Computer in ein maschinenlesbare Darstellung überführt werden. Diese interne Darstellung von Textzeichen war bisher nicht eindeutig. Das war dem damaligen technischen Stand - wenig Speicherplatz und geringe Rechenkapazität - geschuldet. Um Speicherplatz zu sparen, wurden im Standard ISO8859-x verschiedenen Textzeichen gleiche interne Kodierungen zugewiesen, die in einem Byte (kleinste adressierbare Einheit) Platz hatten. Die Interpretation musste dann bei der Darstellung festgelegt werden. Schriftzeichen aus dem asiatischen Raum erfuhren eine Sonderbehandlung.
Mit dem Unicode-Standard ISO-10646 wird nun jedem in der Welt vorkommenden Zeichen eine eindeutige Kodierung zugewiesen. Das ist ein wesentlicher Fortschritt in der Computertechnik, dessen Einführung schon längst ansteht.

Mit Fedora Core 1 wird erstmals im URZ ein Betriebssystem eingesetzt, dass standardmässig den Unicodestandard in der Kodierungform UTF-8 verwendet. Für Interessenten wurde eine weitergehende Information zusammengestellt.

Welche Auswirkungen kann die Einführung von Unicode auf meine Arbeit haben?

Die Umstellung auf eine neue Kodierung erfordert von Betriebssystementwicklern, Anwendungsprogrammprogrammierern und Systemadministratoren grosse Anstrengungen, besonders, um sowohl die Nutzung von in UTF-8 als auch von (älteren) in den Kodierungen ISO8859-x gespeicherten Texten zu gewährleisten.

Kritische Arbeitsweisen können durch die Historie und das Nebeneinanderbestehen alter und neuer Systeme entstehen:

  • wenn im neuen System weiterhin auf alte Dateien zurückgegriffen wird
  • wenn weiterhin in einem alten und neuen System mit den gleichen Daten gearbeitet wird
    • Das alte System erkennt die neue Kodierung nicht oder der zur Visualisierung nötige Zeichensatz ist nicht vorhanden.
    • Das neue System kann die alten Daten nicht ordentlich verarbeiten.

Betroffen von der neuen Kodierung sind alle die Stellen, wo im Rechner auf Zeichen(ketten) zurückgegriffen wird:

  • Textdateien (Beschreibungen in einem Textformat, Sourcecode, Scripts, HTML-Files, Emails, ...)
  • Dateinamen
  • Standardinput, -output, -error, Pipes
  • Environmentvariable
  • Cut&Paste-Buffer
  • Remote-Zugriff auf anderere Rechner: Telnet, ssh, Modem, Serial-Port-Verbindungen zu Terminalemulatoren

wobei für die gewöhnliche Nutzung besonders die ersten beiden Punkte von Bedeutung sind.

Ob Textdateien richtig verarbeitet werden, hängt von dem Leistungsvermögen der Programme ab, die mit den Daten umgehen:

  • Zahlreiche Programme verstehen die alte und neue Kodierungsform (ISO8859-x, UTF-8, ....). Die grafischen Desktopoberflächen KDE und GNOME und deren Programme können i.a. gut mit UTF-8 umgehen.
  • Es gibt Programme, die sich die Kodierung durch Umgebungsvariable vorgeben lassen(z.B. Terminalemulatoren, zahlreiche Kommandozeilenprogramme) oder werten expilizite Angaben in den Dokumenten aus (z.B. Webbrowser).
  • Der problematischste Fall ist, dass eine Applikation eine feste Annahme über die zu verarbeitenden Daten trifft oder nur ISO8859-x versteht. Dies ist leider bei einigen älteren Programmen der Fall, die bisher (noch?) nicht umgestellt sind. Auf die Verwendung dieser Programme sollte verzichtet werden.

Sollten die Textdateien auf Unicode UTF-8 umgestellt werden?

Generell ist das zu empfehlen, weil so mit der Historie gebrochen wird und eine stabile Arbeitsweise gewährleistet ist. Neu erstellte Textdateien werden auch in UTF-8-Kodierung vorliegen.

Es gibt aber auch Fälle, wo eine sofortige Umstellung zu überdenken ist, z.B., wenn die Daten auch noch auf Systemen mit Nicht-UTF-8-Kodierung genutzt werden oder die Programme, die Daten verarbeiten, noch nicht unicodefähig sind. In diesen Fällen ist zu entscheiden, wie die Daten gehalten werden und wann ggf. eine Konvertierung vor der Verarbeitung erfolgen muss.

Wie erkenne ich die Kodierung einer Textdatei?

Die beste Methode ist die Anzeige durch das Kommando file :

  • Terminalfenster starten (Klick auf das Bildschirmsymbol in der unteren Kontrollleiste)
  • mit dem Kommando cd {verzeichnispfad} in das Verzeichnis wechseln, wo die Datei steht. Der Verzeichnispfad wird im Dateimanager in der Adresseingabeleiste angezeigt, wenn man in dieses Verzeichnis wechselt)
  • Eingabe des Kommandos file {dateiname}

Beispiel:


  [ghe@muehle ghe]$cd /afs/tu-chemnitz.de/home/urz/g/ghe/UNICODE/TEST
  [ghe@muehle TEST]$file äöü.UTF-8
  äöü.UTF-8: UTF-8 Unicode text 
  [ghe@muehle TEST]$file iso
  iso: ISO-8859 text

Die Dateimanager konqueror und nautilus zeigen als Dateinhalt leider nur als "Texdatei" an.

Was versteckt sich hinter den Begriffen ASCII, ISO8859, UTF-8?

ISO8859

war die bisher gebräuchliche Kodierungsform von Textzeichen. Jedes Zeichen wurde in einem Byte kodiert; dass ergibt einen Zahlenbereich von 0-255. Praktisch gibt es weniger als 256 Möglichkeiten, weil einige Kombinationen für Steuerungszwecke verloren gehen. Da das garantiert nicht ausreicht, wurden den Zahlenwerten >127 mehrere Bedeutungen zugewiesen und jeweils regional bedingt in einem Standard ISO8859-x festgelegt (ISO8859-1 enthält die westeuropäischen Zeichen, ISO8859-2 kyrillische Zeichen usw.). Die richtige Interpretation erfolgte dann durch die Sprachauswahl (in der LANG-Variable).

UTF-8

Im Unicode-Standard ISO-10464 ist jedem in der Welt vorkommenden Textzeichen und Textsymbol ein eindeutiger Kode zugeordnet. Damit ist aber noch nicht gesagt, wie dieser Kode "verpackt" wird, um im Rechner genutzt und auf den elektronischen Speichermedien gehalten zu werden. UTF-8 ist eine solche standardisierte "Verpackung" von Unicodezeichen.
Als Analogie kann man sich vorstellen, dass ein Gerät komplett oder als Bausatz verpackt vorliegt. Beide mal erhält man das funktionstüchtige Gerät, obwohl es in unterschiedlicher Form gelagert wurde. Es müssen dazu nur andere Tätigkeiten ausgeführt werden.

ASCII

ASCII-Text besteht aus Zeichen, deren Kodierung den interen Zahlenwerten 0-127 entspricht. Diese Kodierung ist in der alten Form (ISO8859) und der Unicodedarstellung UTF-8 gleich! Zu den ASCII-Zeichen gehören die lateinischen Buchstaben, Ziffern u. eine Vielzahl von Sonderzeichen (Punkt, Komma, Ausrufezeichen, ...), aber nicht die Umlaute und das "ß"

Weitergehende Informationen siehe hier .

Terminalemulatoren und Kodierung

Werden Programme in einem Terminalemulator (synonym: Terminalfenster, Terminalkonsole) abgearbeitet und werden alle Textein- und -ausgaben darüber ausgeführt (sogenannte Konsolenprogramme), so tritt der Terminalemulator als "Vermittler" auf. Der Terminalemulator muss eine Annahme treffen, in welcher Kodierung die Texteingaben dem Programm zur Verfügung zu stellen sind und in welcher er dessen Ausgaben zur Weiterverarbeitung zu erwarten hat. Innerhalb eines konkreten Systems ist das sinnvoll voreingestellt, so dass ein Nutzer sich nicht darum zu kümmern braucht.
Probleme treten dann auf, wenn

  • ein entfernter Rechner in einem lokalem Terminalfenster aufgerufen wird und ihre Kodierungen sich unterscheiden (meistens UTF-8 gegen ISO8859-1).
  • mit Daten einer anderen Kodierung gearbeitet wird, als eingestellt.

Bei der Behandlung von Problemen muss weiterhin beachtet werden, dass die Kommandozeilenprogramme oftmals die Ein- und Ausgabekodierungen ebenfalls über die LANG-Variable steuern. Es ist also immer ein Zusammenspiel der Verarbeitung der Daten im Terminalemulator und im Kommandozeilenprogramm. Das ist normalerweise kein Problem. Man kann es sich aber sinnvoll zunutze machen, wenn man Nicht-Unicodedaten in einem Terminalemulator unter einem unicodefähigen System (z.B Fedora) ansehen will.

Wie die Hürden unterschiedlicher Kodierungen zu umgehen sind, lesen Sie bitte weiter unten.

Zur Vertiefung:

Vorausgesetzt wird, dass der Terminalemulator die Kodierung versteht. Dann ist das Entscheidungskriterium die eingestellte Kodierungsform. Sie wird gesteuert über die Variable LANG , wenn nutzerseitig nicht eine Variable belegt wurde, die das aufhebt. Enthält die Variable nicht den Zusatz .UTF-8, so wird eine Kodierung nach ISO8859-x angenommen, bei "de_DE" (deutsch) die Kodierung ISO8859-1. Mit dem Zusatz .UTF-8 wird automatisch Unicode definiert.


     Rechner mit Unicode UTF-8:

         [ghe@muehle applications]$echo $LANG
         de_DE.UTF-8

         [ghe@muehle applications]$locale
         LANG=de_DE.UTF-8 
         LC_CTYPE="de_DE.UTF-8"
         LC_NUMERIC="de_DE.UTF-8"
         LC_TIME="de_DE.UTF-8"
         LC_COLLATE="de_DE.UTF-8"
         LC_MONETARY="de_DE.UTF-8"
         LC_MESSAGES="de_DE.UTF-8"
         LC_PAPER="de_DE.UTF-8"
         LC_NAME="de_DE.UTF-8"
         LC_ADDRESS="de_DE.UTF-8"
         LC_TELEPHONE="de_DE.UTF-8"  
         LC_MEASUREMENT="de_DE.UTF-8"
         LC_IDENTIFICATION="de_DE.UTF-8"
         LC_ALL=

          
     Rechner ohne Unicode:

          [oba@anna UTF8TEST]$ echo $LANG
          de_DE@euro

          [oba@anna UTF8TEST]$ locale
          LANG=de_DE@euro
          LC_CTYPE="de_DE@euro"
          LC_NUMERIC="de_DE@euro"
          LC_TIME="de_DE@euro"
          LC_COLLATE="de_DE@euro"
          LC_MONETARY="de_DE@euro"
          LC_MESSAGES="de_DE@euro"
          LC_PAPER="de_DE@euro"
          LC_NAME="de_DE@euro"
          LC_ADDRESS="de_DE@euro"
          LC_TELEPHONE="de_DE@euro"
          LC_MEASUREMENT="de_DE@euro"
          LC_IDENTIFICATION="de_DE@euro"
          LC_ALL=
 

LANG wirkt auf alle Variable, die für die Internationalisierung verantwortlich sind, falls sie nicht explizit selbst vereinbart wurden (siehe Kommando locale). Näheres ist nachzulesen in den Manuals ( man locale, man 5 locale oder man 7 locale im Terminalfenster eingeben)



Rechner mit Betriebssystem in Unicode-Kodierung UTF-8 (z.B. Fedora)

Dateinamen werden falsch angezeigt

Beispiele:

Im Dateimanager:

konqueror_utf8.jpg

ls-Kommando unter einem Terminalemulator:

konsole_utf8.jpg

Ursache:

ist offenbar eine andere Kodierung des Dateinamens als mit UTF-8 und gleichzeitig die Verwendung von Nicht-ASCII-Zeichen

Lösung:

Sinnvoll ist die Umbennenung des Names mittels eines Dateimanagers in der allgemeinen Form:

  • rechte Maustaste auf den Datei-/Ordnernamen -> Umbenennen -> neuen Namen eingeben

Leider funktioniert dazu der KDE-Dateimanager konqueror erst korrekt ab der KDE-Version 3.2. In der jetzt installierten Version 3.1 können derartige Namen (sichtbar durch ein Symbol mit Schloß) nicht umbenannt werden.

Benutzen Sie bitte den GNOME-Dateimanager nautilus. In einer anderen Desktop-Umgebung als GNOME geben Sie bitte in einem Terminalfenster das Kommando nautilus & ein.

Die Umbenennung des Dateinamens mittels der Kommandosprache (Kommando mv) ist komplizierter, weil es oftmals nicht gelingt, den alten Namen eindeutig auszuwählen. Z.B. werden nichtlesbare Zeichen einfach durch ein Fragezeichen ersetzt.

Das URZ ist bemüht, ein Werkzeug zur Verfügung zu stellen, was innerhalb eines Dateibaumes alle Datei- und Ordnernamen auf eine reine ASCII-Kodierung umstellt. An dieser Stelle wird zu gegebener Zeit darüber informiert.

Bildung von Dateinamen:

Bitte verwenden Sie als Dateinamen möglichst nur

  • Die Gross- und Kleinbuchstaben A-Z, a-z
  • die Ziffern 0-9
  • den Unterstrich, das Minuszeichen, den Punkt

Die mit neueren Window-Systemen eingeführte und nun leider auch unter den Linux-Desktopsystemen übernommene Unsitte, in Dateinamen Leerzeichen zu verwenden, ist besonders problematisch, weil gerade dieses Zeichen - wie in der Umgangsprache selbst - von zahlreichen Programmen als Trennzeichen interpretiert wird.

Wie kann ich ISO8859-1-Textdateien (Shell-Scripte usw.) in UTF-8 (oder in andere Kodierungen) konvertieren

Oftmals sollen Textdateien aus dem alten System weiter verwendet werden. Obwohl komfortable Textverarbeitungssysteme die Kodierung der Textdateien erkennen, gibt es zahlreiche Programme im Anwendungs- und Systembereich, die dies nicht selbstständig tun. Sollen derartige Daten - insbesonders zählen dazu auch Shellscripte mit nicht reiner ASCII-Kodierung - weiter verwendet werden, ist eine Konvertierung unumgänglich.

Dazu dient das Kommandos iconv :


   iconv -f ISO8859-1 -t UTF-8 {datei_in_iso8859_kodierung} >{datei_in_utf8_kodierung}

Mit dem Kommando können zahlreiche weitere Konvertierungen vorgenommen werden. Siehe dazu: iconv --list

Die komplette Beschreibung (Manual) wird gefunden:

  • Eingabe im Terminalfenster: man iconv
  • unter der KDE-Oberfläche: KDE-Hilfe (Rettungsring-Ikone) --> Unix-Handbuchseiten -> (1)Benutzerbefehle -> iconv

Ein weiteres Kommando zur Konvertierung von Texten ist recode . Die Beschreibung wird analog iconv gefunden.

Welchen Texteditor verwende ich?

Texteditoren, die auch UTF-8-Kode verstehen, sind u.a.

  • kwrite / kate
    Bei diesen Texteditoren kann im Auswahlfenster zum Öffnen der Datei über ein Menü (rechts oben) die Kodierung eingestellt werden. In dieser Kodierung wird auch wieder gespeichert.
    kwrite ist ein einfacher Texteditor, der in den meisten Fällen ausreichend sein wird. kate ist ein sehr komfortabler Texteditor mit Sidebar, Mehrfachfenstern und einem integrierten Terminalfenster.
    Sollte beim kwrite trotz richtiger Wahl der Kodierung ein fehlerhafter Text erscheinen, ist Auto oder die korrekte Kodierung im Menüpunkt Ansicht auszwählen. (Auto ist leider nicht standardmässig eingestellt).

  • xemacs
    Die grafische Einbettung des emacs bearbeitet sowohl ISO8859- als auch UTF-8-Kode.

  • vim (vi) und emacs
    Diese Kommandozeileneditoren erkennen und bearbeiten ISO8859- und UTF-8-Kodierungen.

Nicht geeignet ist der Texteditor nedit, der nur ISO8859-Kode versteht.

Das Mailprogramm Pine

Die in Fedora Core 1 installierte pine-Version 4.58 kann Mails im Zeichensatz UTF-8 ordentlich anzeigen. Da der eingebaute Editor "pico" jedoch nicht fähig ist, mit Unicode-Zeichen umzugehen, gibt es ein Problem beim Erstellen oder Beantworten von E-Mail (Text-Verstümmelung nach Eingabe von Umlauten).

Wenn Sie Umlaute in Ihrer Mail verwenden wollen, gibt es folgende Lösung: Verwenden Sie immer einen externen Editor, der mit Unicode umgehen kann, z.B. vim. Dazu können Sie pine standardmäßig veranlassen:

M ain -> S etup -> C onfig

Dort aktivieren: [X]  enable-alternate-editor-implicitly

Dann wird der Editor vim immer aufgerufen, wenn Sie zum Verfassen in den Text einer E-Mail wechseln. Alternativ können Sie bei Bedarf den Wechsel mit Strg-_ (Strg Unterstrich) erzwingen.

Sobald es eine neue Version gibt, die diesen Mangel behebt, werden wir diese verfügbar machen.

Mein Programm stellt Textzeichen falsch oder nicht dar

Das verwendete Programm hat die Kodierung der Textdatei bzw. des Textes nicht erkannt. Das kann sich auf die grafische Darstellung vorhandener Textdateien und/oder auf die Darstellung von Tastatureingaben beziehen. Die Ursachen dafür können vielfältig sein, so dass eine Fallunterscheidung gemacht werden muss. Angenommen werden kann, dass vom System her UTF-8 einstellt ist ( Die LANG-Variable besitzt die Endung .UTF-8 ) und ein Zeichensatz (Font) in Unicode (ISO 10646-1) zur Visaulisierung vorliegt:

Das Programm hat eigene grafische Fenster mit Textbereichen und nutzt demzufolge nicht die Standard-E/A über einen Terminalemulator

  • Der Text ist schon utf-8-kodiert:

    • Im Programm muss Unicode über ein Menü eingestellt werden. Das ist z.B. bei Webbrowsern der Fall, wenn sie die Kodierung aus dem Text nicht erkennen.
    • Falls sich die Kodierung nicht im Programm manuell einstellen lässt, muss ein unicodefähiges Programm mit gleichem Aufgabenspektrum genutzt werden.
    • ist die Nutzung eines nichtunicodefähigen Programmes sinnvoll oder gar notwendig, muss der Text vor der Nutzung mit dem Kommando iconv in ISO8859 kodiert und anschliessend wieder rückkonvertiert werden. Das Programm selbst ist auf eine LANG-Variable ohne _.UTF-8_-Erweiterung einzustellen, damit die Tastatureingaben richtig konvertiert werden:
      Beispiel 1:
         Texteditor "nedit", der aber in der Praxis besser durch den
         unicodefähigen "kwrite" ersetzt werden sollte

         iconv -f UTF-8 -t ISO8859-1 {datei_im_utf8_format} >/tmp/{datei_im_iso8859_format}
         LANG=de_DE nedit /tmp/{datei_in_iso8859_format}
         iconv -f ISO8859-1 -t UTF-8 /tmp/{datei_im_iso8859_format} >{datei_im_utf8_format}

        Nutzer der tcsh ersetzen die 2. Eingabe durch 

         setenv LANG de_DE; nedit /tmp/{datei_im_iso8859_format}


      Beispiel 2: Nachrichtenanzeige "xmessage"

        Sollte das Programm nur der Anzeige dienen und liest auch von der Standardeingabe,
        kann man folgende Konstruktion verwenden:

         iconv -f UTF-8 -t ISO8859-1 {datei_im_utf8_format}  | xmessage -file -  

  • Der Text ist nicht utf-8-kodiert

    Nach Möglichkeit sollten die Textdateien nach UFT-8 konvertiert werden. Allerdings kann dies in einigen Fällen noch ungünstig sein, z.B., weil die Daten auch in älteren Systemplattformen benutzt werden.

    • Im Programm muss die Kodierung über ein Menü eingestellt werden. Das ist z.B. bei Webbrowsern der Fall, wenn sie die Kodierung aus dem Text nicht erkennen.
    • Wenn eine derartige Einstellmöglichkeit nicht vorgesehen ist, kann es sein, dass das Programm die LANG-Variable auswertet. Diese darf dann die Endung .UTF-8 nicht enthalten. Eine lokale Änderung dieser Variable vor dem Aufruf des Programmes über eine Kommandoeingabe hilft dann (Die Kommanodos sind analog dem nächsten Punkt)
    • Das Programm zeigt Texte aus Dateien richtig an, aber Tastatureingaben falsch. Dann handelt es sich um ein Programm , dass ISO8859-Kode richtig versteht (und vielleicht nicht mal unicodefähig ist), aber die Tastatureingaben in UTF-8-Kodierung erhält. Auch in diesen Fällen muss die LANG-Variabale vor dem Aufruf des Programmes ohne .UTF-8 angegeben werden:
             
                Beispiel: Texteditor "nedit"
          
                  LANG=de_DE nedit {datei_in_iso8859_format}
                      
                 Nutzer der tcsh: 
          
                  setenv LANG de_DE; nedit {datei_im_iso8859_format}

Programme mit Textein- und -ausgaben über einen Terminalemulator (konsole, gnome-terminal, xterm)

Das sind typische Kommandozeilenprogramme. Vorausgesetzt werden kann, dass der Terminalemulator unicodefähig ist und auch Unicode über die LANG-Variable (LANG=de_DE.UTF-8) eingestellt ist. (Näheres zu den Terminalemulatoren und dem Zusammenspiel mit den Kommandozeilenprogrammen siehe "Terminalemulatoren und Kodierung").

Die hier aufgeführten Beispiele zur Behandlung von Problemen sind nur eine Hilfe, um unter einem uft-8-fähigen System mit Nicht-UTF-8-Daten umzugehen. Es muss wieder auf die Empfehlung hingewiesen werden, alle Textdaten möglichst nach UTF-8 zu konvertieren, falls dem nichts Ernstes gegenübersteht.

Zur Erkennung, in welchen Format die Textdaten vorliegen, siehe "Wie erkenne ich die Kodierung einer Textdatei?"

Die Beispiele für Nicht-UFT-8-Kode beziehen sich immer auf ISO8859-1, es könnte aber auch jeder andere sein.

  • Wurde in einem Terminal eine Verbindung zu einem Rechner mit ISO8859-Kodierung hergestellt,siehe "Remote-Zugriff auf Rechner mit ISO8859-Kodierung"

  • Die zu verarbeitende Daten liegen nicht in Unicode vor, werden vom Terminalemulator aber so interpretiert.

    • Der einfachste Fall ist, einen neuen Terminalemulator aufzurufen und sowohl ihm als auch den darin zu startenden Programmen die "ISO8859-1-Kodierung" vorzugeben:

      • LANG=de_DE konsole &
      • In dem neuen Terminalemulator (hier konsole) die LANG-Variable ändern:$BR%
        export LANG=de_DE oder, wenn mit einer tcsh gearbeitet wird:
        setenv LANG de_DE

    • Soll kein neues Terminalfenster geöffnet werden, wird es komplizierter. Hier können nur beispielhaft Aufrufkonstrukte angegeben werden, die vor allem die LANG-Variable und das Programm luit (Manual siehe man luit) nutzen.
      • Dateinamen in einem Verzeichnis ansehen, die Zeichen in ISO8859-Kodierung enthalten:

        LANG=de_DE luit ls

      • Inhalte von Textdateien ansehen, die ISO8859-Zeichen enthalten:

        luit -encoding "ISO8859-1" cat {dateiname} , alternativ
        _LANG=de_DE luit cat {dateiname}_

LaTeX: Ein mit UTF-8-Kodierung erstelltes Dokument wird fehlerhaft angezeigt und/oder gedruckt

Bei der Verarbeitung von LaTeX-Quelltext mit Unicode-Zeichen ist in der Präambel zu schreiben:

\usepackage[utf8]{inputenc}

und das ANSTELLE von \usepackage[latin1]{inputenc}

Remote-Zugriff auf Rechner mit ISO8859-Kodierung

Variante 1:

  • In einem Terminalfenster (das standardmässig auf Unicode eingestellt ist), folgendes eingeben:

    LANG=de_DE luit ssh {rechnername} oder
    luit -encoding ISO8859-1 ssh {rechnername}

luit ist ein Filter (näheres entnehme man dem Manual) zwischen einem UTF-8-Terminalemulator und einer beliebigen Anwendung, dass die Ausgabe des Programmes von der durch die LOCALE-Variable (LANG, LC_ALL, ...) angegebenen Kodierung in UTF-8 konvertiert und die Terminaleingaben von UTF-8 nach der durch die LOCALE-Variablen angegebenen Kodierung umwandelt. Analog dazu kann die Kodierung als Option angegeben werden.

Variante 2:

  • In einem Terminalfenster folgendes Kommando eingeben:
    • bash: LANG=de_DE {aufruf des terminalemulators} &
    • tcsh: (set LANG de_DE; {aufruf des terminalemulators} &)
  • in dem aufgehenden Fenster dann den gewohnten ssh-Aufruf eingeben

Terminalemulator: konsole, gnome-terminal, xterm

Auf entfernte Rechner wird meist über ein ssh-Kommando in einem Terminalemulator zugegriffen. Dieser muss dazu wissen, in welcher Kodierung die dort gestarteten Programme ihre Eingaben bekommen müssen bzw. ihre Ausgaben machen. Die Steuerung erfolgt über die LANG-Variable zum Aufrufzeitpunkt. Um mit einem nicht-unicodefähigen Rechner zu kommunizieren, muss der Zusatz ".UTF-8" ausgeschaltet sein.



Rechner mit Betriebssystem in ISO8859-Kodierung (z.B. RedHat 7.3)

Wie kann ich eine UTF-8-Datei in ISO8859 umwandeln?

Das ist manchmal notwendig, wenn das System noch nicht Unicode versteht, aber die Textdatei mit einem solchen erstellt wurde.

Zur Umwandlung existiert das Kommando iconv:


   iconv -f UTF-8 -t ISO8859-1 {datei_in_utf8_kodierung} >{datei_in_iso8859_kodierung}

Mit dem Kommando können zahlreiche weitere Konvertierungen vorgenommen werden. Siehe dazu: iconv --list

Remote-Zugriff auf Rechner mit UTF-8-Kodierung

Die remote-Zugriffe erfolgen traditionsgemäss so, dass in einem lokalen Fenster eines Terminalemulators über eine ssh-Verbindung eine Shell auf dem entfernten Rechner geöffnet wird.
Zahlreiche Probleme treten auf, wenn Terminalemulator und Sitzungen in unterschiedlichen Kodierungsumgebungen laufen.
Deshalb wird empfohlen, den Terminalemulator auf dem entfernten Rechner aufzurufen, da er für die dort vorhandene Umgebung konfiguriert ist:
Keyboardeingaben werden für die darin aufgerufenen Programme in UTF-8 verschlüsselt und Ausgaben für einen Unicodezeichensatz aufbereitet.

ssh {rechnername} {terminalemulator}

Bei der Auswahl des Terminalemulators auf der entfernten Maschine muss beachtet werden, mit welchem Fontsystem er arbeitet:

  • Das traditionelle X11-Fontsystem nutzt immer die Zeichensätze des lokalen Xservers, auch wenn das Programm entfernt gestartet wurde.
  • Das neuere Xft-System ordnet die Fontdatei direkt dem Programm zu. Damit werden beim remote-Aufruf die Fonts auf der entfernten Maschine genutzt.

Wenn auf dem entfernten Rechner Fedora installiert ist:

  • konsole und gnome-terminal nutzen Xft und machen damit keine Probleme
  • xterm nutzt das traditionelle X11-Fontsystem und sogenannte Aliasnamen für Standardfonts. Da nicht damit zu rechnen ist, dass auf dem lokalen Rechner ein Unicodefont (iso10646-1) zum Standard gemacht ist, muss die Fontangabe explizit erfolgen, z.B.:

    ssh {rechnername} xterm -fn "-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1"

    Voraussetzung ist natürlich, dass ein Unicodefont auf dem lokalen Rechner verfügbar ist (erkennbar über das Kommando "xlsfonts | grep iso10646"). Dies ist bei RedHat 7.3 der Fall.

Weitere Informationsquellen