Ausgabe von NON-ASCII Zeichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

Hallo zusammen,

ich habe eine relativ umfangreiche Python Scriptsammlung welches bisher aus einem Ubuntu 14.04. lief.
Nun habe ich die Scripte auf einen neune 18.04 umgezogen. Das ganze funktioniert auch bis auf eine Kleinigkeit:


In den Scripte wird curses gearbeitet. Auf dem alten System wurden mir die Umlaute dagestellt im neune nicht.
Hat jemand eine Idee wieso

hier mal ein Beispiel abschnitt:

Code: Alles auswählen

#!/usr/bin/pytho
# -*- coding: utf-8 -*-
import curses

def init_curses():
    stdscr = curses.initscr()
    curses.noecho()
    curses.cbreak()
    stdscr.keypad(1)
    curses.start_color()
    curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE)
    curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK)
    stdscr.bkgd(curses.color_pair(1))
    stdscr.refresh()
    return stdscr


stdscr = init_curses()
stdscr.clear()
stdscr.refresh()

pgwin = curses.newwin(17, 80, 4, 0)
pgwin.clear()
pgwin.bkgd(curses.color_pair(1))
pgwin.box()
pgwin.addstr(1, 5, "Test \xdc    -  ä")
pgwin.addstr(13, 56,  "      ",curses.color_pair(2))

#Ausgabe
pgwin.refresh()
Anstelle des Sonderzeichen wird nur eine Leerzeichen ausgegeben.

(die Scripte sind teilweise schon sehr alt, erfüllen aber immer noch Ihren Zweck...)

Hat jemand eine Idee, was das sein könnte?
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Deine Shebang-Zeile ist kaputt.

14.04 auf 18.04. Kann es sein, dass du vorher Python 2 benutzt hast und nun Python 3 verwendest?
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

Hallo,

ja genau so ist es,

aber was kann ich gegen die kaputte Shebang-Zeile tun?
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@reneschmidt: Sie reparieren‽ 🤔
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@reneschmidt: Also bei mir läuft das auf einem Ubuntu 18.04 problemlos mit Python *3* und zeigt auch das grosse Ü und das kleine ä richtig an. Die werden hingegen *nicht* angezeigt wenn ich das mit Python *2* ausführe.

Aber hey, Python 2 sollte man eh nicht mehr verwenden, bzw. doch so langsam mal anfangen auf Python 3 zu portieren.

Das Programm hinterlässt das Terminal in einem blöden Zustand. Das wird erst durch ``reset`` wieder brauchbar. Man sollte deswegen immer `curses.wrapper()` verwenden, damit so etwas nicht passieren kann. Die Hälfte der `init_curses()`-Funktion wird damit auch überflüssig. Und könnte dann auch in `init_colors()` umbenannt werden.

Am Ende sollte man auf eine Taste warten, damit man auch etwas sehen kann.

Code: Alles auswählen

#!/usr/bin/env python3
import curses


def init_colors(stdscr):
    curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE)
    curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK)
    stdscr.bkgd(curses.color_pair(1))


def main(stdscr):
    init_colors(stdscr)
    stdscr.clear()
    stdscr.refresh()

    pgwin = curses.newwin(17, 80, 4, 0)
    pgwin.clear()
    pgwin.bkgd(curses.color_pair(1))
    pgwin.box()
    pgwin.addstr(1, 5, "Test \xdc    -  ä")
    pgwin.addstr(13, 56, "      ", curses.color_pair(2))
    pgwin.refresh()
    
    pgwin.getch()


if __name__ == "__main__":
    curses.wrapper(main)
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten