[ncurses] Probleme mit Umlauten und ein paar Sonderzeichen

Dieses Thema im Forum "C/C++" wurde erstellt von root1992, 10.04.2007.

  1. #1 root1992, 10.04.2007
    Zuletzt bearbeitet: 10.04.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Hi

    Ich weiß nicht ob es jetzt an C++ und ncurses oder am System liegt, ich habs mal hier rein, falls ein MOD mein, es gehört wo anders hin, bitte verschieben, danke :)

    Mein System:
    Ubuntu
    UTF8 (habs versucht auf ISO umzustellen aber funst ned so außerdem sollte es mit UTF8 funktionieren, da es ja die "Zukunft" ist (bzw sein sollte) )
    sonst müsste alles aktuell sein (g++, ...)

    Mein Problem:
    Z1={Ä;Ü;Ö;ä;ü;ö;ß}
    Z2={§;°;´¹;²;³;¼;½}

    Z1 und Z2 werden nicht richtig dargestellt (printw("%c");) und was komisch ist ich hab mir schnell ein Programm geschrieben:
    Code:
    #include <iostream>
    #include <ncurses.h>
    using namespace std;
    int main(){
    initscr();
            noecho();
            keypad(stdscr,TRUE);
    	int a=getch();
    endwin();
    cout << "\neingabe: "<<a <<endl;;
    return 0;
    }
    
    bei Z1 bekomme ich immer 195 (a=195) und bei Z2 194 zurück.
    Also immer diese zwei Werte, egal welches Zeichen entweder 195 oder 194.

    Evtl sind noch andere Zeichen betroffen.

    Vielen Dank

    //edit: ich habs jetzt auch mal mit ncursesw versucht aber ist gleich ich werde es mal an nem anderen Rechner (FreeBSD) testen.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 patlkli, 12.04.2007
    patlkli

    patlkli Linux-Freak

    Dabei seit:
    23.11.2005
    Beiträge:
    158
    Zustimmungen:
    0
    Ort:
    Landshut
    Hi root1992! ^^

    Ich hab erstmal dein Programm von oben abgeändert:

    Code:
    #include <iostream>
    #include <ncurses.h>
    #include <locale.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    using namespace std;
    int main(){
    setlocale (LC_ALL, "de_DE");
       int c;
    
       while( (c = getchar()) !='.')
       {
    	cout << "\neingabe: "<<c <<endl;;
       }
    return 0;
    }
    Damit wird aus der Ausgabe 195 für die Umlaute 195 + 164 (ä), 182 (ö) bzw. 188 (ü) (die 10 ist Return), d.h. das die 3 Umlaute 2 Codes ausgeben. Vorsicht, nun beginnt der verrückte Teil: Daraufhin hab ich mal so aus Interesse in mein Eterm, das anscheinend meine dt. Locales-Einstellungen ignoriert ä, ö und ü eingegeben und die ausgegebenen Zeichen mit den Zeichen, die den Codes aus obigen Programm in der ASCII-Tabelle (http://www.asphelper.de/referenz/ASCIIANSI.asp) entsprechen, verglichen und siehe da, sie sind identisch!

    Kurzfassung:

    Ausgabe des Programms: 195 + 164 = ä; 195 + 182 = ö; 195 + 188 = ü

    Entsprechungen dafür in der ASCII-Tabelle:
    195 = "Grossbuchstabe A tilde, EBCDIC-C" = Ã
    164 = "Allgemeines Währungszeichen, EBCDIC-u" = ¤
    182 = "Paragraphen-Zeichen, pilcrow sign" = ¶
    188 = "Ein Viertel (Viertel), vulgar fraction one quarter" = ¼

    Ausgabe in der Konsole wenn ich (man) äöü drückt: äöü

    Die Lösung dafür könnte sein, dass man im Skript einfach überprüft, wenn 195 zurückgegeben wird, ob ein zweiter Code übermittelt wird.

    Ich hoffe, dass meine verrückte, aber irgendwie logische Theorie jemand versteht.

    Grüße,
    patlkli!
     
  4. #3 root1992, 12.04.2007
    Zuletzt bearbeitet: 12.04.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    So bei mir ist es denke ich genauso. getch() macht das selbe.

    Ncurses zeigt auch keine Umlaute an :(
    z.B. wenn ich den Wert von getch() anzeigen lass (auch bei beiden) zeigt er nichts an.
     
  5. #4 patlkli, 12.04.2007
    Zuletzt bearbeitet: 12.04.2007
    patlkli

    patlkli Linux-Freak

    Dabei seit:
    23.11.2005
    Beiträge:
    158
    Zustimmungen:
    0
    Ort:
    Landshut
    Also, ich hab nun mal in meiner KDE-Konsole die Kodierung "Westeuropäisch (ISO-8859-15) eingestellt und dann dieses Programm hier verwendet:

    Code:
    #include <iostream>
    #include <ncurses.h>
    #include <locale.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    using namespace std;
    int main(){
    setlocale (LC_ALL, "de_DE"); // z.Zt. vll. noch nützlich
       int c;
      c = getchar();
      while ( (c = getchar()) != EOF )
      {
    	if (c == 195)
    	{
    		if (c == 164)
    			putchar(228);
    		if (c == 182)
    			putchar(246);
    		if (c == 188)
    			putchar(252);
    	}
    	else
    	{
    		putchar(c);
    	}
      }
      putchar(c);
    return 0;
    }
    edit: Hmm, nu geht aber alles... Sonderzeichen etc. auch, ich meld mich später nochmal
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema: [ncurses] Probleme mit Umlauten und ein paar Sonderzeichen
Besucher kamen mit folgenden Suchen
  1. umlaut für paar

Die Seite wird geladen...

[ncurses] Probleme mit Umlauten und ein paar Sonderzeichen - Ähnliche Themen

  1. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  2. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  3. Forscher analysieren Durchsatzprobleme im Linux-Scheduler

    Forscher analysieren Durchsatzprobleme im Linux-Scheduler: Eine Gruppe von Forschern hat Fälle identifiziert, in denen der Scheduler im Linux-Kernel falsche Entscheidungen trifft und die CPUs nicht so gut...
  4. München: LiMux als Sündenbock für IT-Probleme?

    München: LiMux als Sündenbock für IT-Probleme?: Im Münchner Stadtrat soll später in diesem Jahr erneut über den Einsatz von Linux in der Stadtverwaltung diskutiert werden. Die Grünen vermuten,...
  5. BSI-Audit findet keine akuten Probleme in OpenSSL

    BSI-Audit findet keine akuten Probleme in OpenSSL: Das Bundesamt für Sicherheit in der Informationstechnik hat OpenSSL auf seine Sicherheit untersuchen lassen. Die Analyse zeigt vor allem, dass die...