Seite 1 von 1

Ausgabe von NON-ASCII Zeichen

Verfasst: Sonntag 4. August 2019, 15:40
von reneschmidt
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?

Re: Ausgabe von NON-ASCII Zeichen

Verfasst: Sonntag 4. August 2019, 16:24
von sparrow
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?

Re: Ausgabe von NON-ASCII Zeichen

Verfasst: Freitag 16. August 2019, 19:34
von reneschmidt
Hallo,

ja genau so ist es,

aber was kann ich gegen die kaputte Shebang-Zeile tun?

Re: Ausgabe von NON-ASCII Zeichen

Verfasst: Freitag 16. August 2019, 19:52
von __blackjack__
@reneschmidt: Sie reparieren‽ 🤔

Re: Ausgabe von NON-ASCII Zeichen

Verfasst: Freitag 16. August 2019, 22:20
von __blackjack__
@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)