Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: Kodierung der Konsole umstellen?

  1. #1
    naraesk
    Gast

    Kodierung der Konsole umstellen?

    Guten Abend,
    die Konsole arbeitet ja standardmäßig mit UTF8, gibt es eine Einstellmöglichkeit, sodass sie ANSI verwendet, insbesondere für Benutzereingaben?

    Irgendwelche Hin- und Hercodierung im Programmcode bringt in diesem Fall nichts, es muss schon so eine globale Einstellung sein.

  2. #2
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    Kennst du die Umgebungsvariable LANG?

    Die wird normalerweise irgendwo in /etc gesetzt und beinhaltet sowas wie "de_DE.UTF-8". Kannst es ja mal mit
    Code:
    $ export LANG=C
    oder
    Code:
    $ unset LANG
    probieren.

    Gruß
    L00NIX

  3. #3
    naraesk
    Gast
    Danke, werde es probieren.
    Aber was ändere ich denn alles mit dieser Variablen, offensichtlich ja auch die Systemsprache?

  4. #4
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    Zitat Zitat von naraesk Beitrag anzeigen
    Danke, werde es probieren.
    Aber was ändere ich denn alles mit dieser Variablen, offensichtlich ja auch die Systemsprache?
    Das bekommst du mit locale angezeigt:
    Code:
    $ locale
    LANG=de_DE.UTF-8
    LANGUAGE=de_DE:de
    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=
    Die Codierung wird übrigens je nach Editor erkannt bzw. ist einstellbar. Somit braucht man an dieser Einstellung normalerweise nichts drehen, denn UTF-8 ist die moderne (also heutezutage) standardmäßg verwendete Codierung der Linux-Systeme.

    Wenn es nur ums Programmieren gehen sollte, ist also eine Einstellung in der Entwicklungsumgebung sinnvoller als an LANG zu drehen.

    Gruß
    L00NIX

  5. #5
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Du kannst sie, falls das installiert ist, von "de_DE.UTF-8" auf "de_DE.ANSI_X3.110-1983" oder nur "de_DE" oder so (siehe "locale -m") umstellen, aber ehrlich gesagt bin ich mir nicht sicher, ob LANG da richtig ist, weil IMHO ist das nur für die Ausgabe, oder?

  6. #6
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    Zitat Zitat von oziris Beitrag anzeigen
    Du kannst sie, falls das installiert ist, von "de_DE.UTF-8" auf "de_DE.ANSI_X3.110-1983" oder nur "de_DE" oder so (siehe "locale -m") umstellen, aber ehrlich gesagt bin ich mir nicht sicher, ob LANG da richtig ist, weil IMHO ist das nur für die Ausgabe, oder?
    Nein, nicht nur. Mit LANG stellt man nur "den ganzen Mist" auf einmal um.

    Für mal locale aus, ändere LANG und führe erneut locale aus.


    Infos, worauf sich die ganzen LC_*-Variablen beziehen und was sie beeinflussen, siehe die Manpage locale(7).

    Es geht z.B. auch um die Behandlung von C-Funktionen (case-sensitivity) und Sortierungen (regex), Darstellung von Formaten (Währung, Zeit) und betrifft alle Programme, die entprechend dagegen (GNU C-Library) gelinkt sind und es unterstützen (reinprogrammiert haben).

    Gruß
    L00NIX

  7. #7
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Achso, danke für die Info.

  8. #8
    naraesk
    Gast
    $ export LANG=de_DE.ANSI_X3.110-1983
    $ locale
    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_MESSAGES to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=de_DE.ANSI_X3.110-1983
    LC_CTYPE="de_DE.ANSI_X3.110-1983"
    LC_NUMERIC="de_DE.ANSI_X3.110-1983"
    LC_TIME="de_DE.ANSI_X3.110-1983"
    LC_COLLATE="de_DE.ANSI_X3.110-1983"
    LC_MONETARY="de_DE.ANSI_X3.110-1983"
    LC_MESSAGES="de_DE.ANSI_X3.110-1983"
    LC_PAPER="de_DE.ANSI_X3.110-1983"
    LC_NAME="de_DE.ANSI_X3.110-1983"
    LC_ADDRESS="de_DE.ANSI_X3.110-1983"
    LC_TELEPHONE="de_DE.ANSI_X3.110-1983"
    LC_MEASUREMENT="de_DE.ANSI_X3.110-1983"
    LC_IDENTIFICATION="de_DE.ANSI_X3.110-1983"
    "de_DE" ist bei locale -a aufgeführt und "ANSI_X3.110-1983" unter locale -m.

    MIt LANG=C tauchen obige Meldungen zwar nicht auf, aber das hat auch keinen Erfolg gebracht.
    Geändert von naraesk (29.05.10 um 12:13 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.551
    Code:
    setxkbmap us -print | xkbcomp - $DISPLAY
    zurück mit

    Code:
    setxkbmap de  -print | xkbcomp - $DISPLAY

  10. #10
    naraesk
    Gast
    Naja, damit stelle ich doch ein US- Layout ein, mehr aber auch nicht?

  11. #11
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.551
    Naja, damit stelle ich doch ein US- Layout ein, mehr aber auch nicht?
    Korrekt. Vorrausgesetzt, es läuft ein X und $DISPLAY ist gültig gesetzt

    Hmm, kannst Du mir den Unterschied zwischen US-Layout und ANSI erklären?

    Übrigens fehlt noch

    Code:
    loadkeys
    in diesem Zusammenhang.
    Geändert von Aqualung (30.05.10 um 16:36 Uhr)

  12. #12
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Zitat Zitat von Aqualung Beitrag anzeigen
    Hmm, kannst Du mir den Unterschied zwischen US-Layout und ANSI erklären?
    Führt man folgendes aus und hat man alles notwendige installiert...
    Code:
    cd /tmp;
    echo $'\x74\x65\x73\x74\xf6\xfc\x0a\xe4' > testfile;
    file testfile;
    iconv -f ISO_8859-1 -t UTF8 testfile -o testfile2;
    file testfile2;
    iconv -f ISO_8859-1 -t ANSI_X3.4-1986 testfile -o testfile3;
    cat testfile | tr -d $'\xf6\xfc\x0a\xe4' | iconv -f ISO_8859-1 -t ANSI_X3.4-1986 -o testfile3 ;
    file testfile3;
    hexdump testfile2 ;
    hexdump testfile3 ;
    hexdump testfile;
    ... dann kommt da etwa sowas raus:
    Code:
    user@localhost:/home/user$ cd /tmp;
    user@localhost:/tmp$ echo $'\x74\x65\x73\x74\xf6\xfc\x0a\xe4' > testfile;
    user@localhost:/tmp$ file testfile;
    testfile: ISO-8859 text
    user@localhost:/tmp$ iconv -f ISO_8859-1 -t UTF8 testfile -o testfile2;
    user@localhost:/tmp$ file testfile2;
    testfile2: UTF-8 Unicode text
    user@localhost:/tmp$ iconv -f ISO_8859-1 -t ANSI_X3.4-1986 testfile -o testfile3;
    iconv: illegal input sequence at position 4
    user@localhost:/tmp$ cat testfile | tr -d $'\xf6\xfc\x0a\xe4' | iconv -f ISO_8859-1 -t ANSI_X3.4-1986 -o testfile3 ;
    user@localhost:/tmp$ file testfile3;
    testfile3: ASCII text, with no line terminators
    user@localhost:/tmp$ hexdump testfile2 ;
    0000000 6574 7473 b6c3 bcc3 c30a 0aa4
    000000c
    user@localhost:/tmp$ hexdump testfile3 ;
    0000000 6574 7473
    0000004
    user@localhost:/tmp$ hexdump testfile
    0000000 6574 7473 fcf6 e40a 000a               
    0000009
    user@localhost:/tmp$
    Daraus sollten einige Unterschiede hervorgehen:
    UTF8 ist anders als ISO-8895-* und in ANSI_X3.4-1986 sind einige Zeichen aus UTF8 und ISO-8895-* nichtmal definiert, daher klappt die Konvertierung erst, nachdem die entfernt sind. Ansonsten liegen einige Zeichen aber auf den selben Positionen, diese sind in diesem Beispiel die Buchstaben "test" -> "6574 7473" wobei die zwei Bytes jeweils vertauscht sind -> "74 65 73 74", was die ersten Zeichen sind, die zu Anfang in die Datei geschrieben wurden ("$'\x74\x65\x73\x74'").

    Wenn man z.B. diese Testdateien nun als Eingabe in Programme pipe-t, dann müssen die Programme damit irgendwie fertig werden. Der Benutzer kann das evtl. einstellen, welchen Zeichensatz er verwendet. Ich in mir aber nicht ganz sicher, wie.
    Was L00NIX schreibt, klingt ziemlich vielversprechend, aber ich weiß nicht so recht, wie ich es testen soll. Ich denke, naraesk kann das vllt. mal ausprobieren und uns sagen, ob's geklappt hat.

  13. #13
    naraesk
    Gast
    Also meiner Ansicht nach ist ANSI eine Kodierung. Hier Beispielsweise steht der komplette ANSI- Zeichensatz:http://www.torsten-horn.de/techdocs/ascii.htm
    Vorallem stehen dort die entsprechenden hexadezimalen ANSI- Codes. Diese sollen nach Möglichkeit funktionieren. Tun sie aber nicht, da UTF8 eben eine unterschiedliche Kodierung verwendet. Daher soll meine Eingabe direkt als ANSI und nicht als UTF8 gelesen werden. Der Quelltext ist leider fix, sodass dort keine Änderung erfolgen kann.
    Geändert von naraesk (30.05.10 um 21:29 Uhr)

  14. #14
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    @OP:
    Welche Entwicklungsumgebung verwendest du?
    Hast du nachgelesen, wie du dort die Codierung (Encoding) einstellen kannst?
    Hast Du das bereits versucht?
    Warum stocherst du weiter in Themen rum, die dein Problem nicht lösen?

  15. #15
    naraesk
    Gast
    Zitat Zitat von L00NIX Beitrag anzeigen
    @OP:
    Welche Entwicklungsumgebung verwendest du?
    Kate. Das Programm wird aber normal über die Konsole aufgerufen, die Lösung sollte auch nicht IDE- spezifisch sein.

    Zitat Zitat von L00NIX Beitrag anzeigen
    Warum stocherst du weiter in Themen rum, die dein Problem nicht lösen?
    Was löst denn mein Problem bzw. wieso ist das hier der falsche Ansatz?
    Geändert von naraesk (01.06.10 um 20:42 Uhr)

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 24.01.05, 11:43
  2. Antworten: 2
    Letzter Beitrag: 25.11.04, 11:20
  3. Riesiges Problem - Konsole läuft unter KDE nichtmehr
    Von BoneCracker im Forum System installieren und konfigurieren
    Antworten: 3
    Letzter Beitrag: 28.09.04, 14:15
  4. Von Alsa auf OSS per Konsole umstellen
    Von mdkuser im Forum System installieren und konfigurieren
    Antworten: 8
    Letzter Beitrag: 12.09.04, 19:08
  5. konsole geht nicht mehr
    Von Olimaus im Forum Windowmanager
    Antworten: 0
    Letzter Beitrag: 30.01.03, 20:13

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •