Umlaute aus XML-Datei

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
daniel2
User
Beiträge: 2
Registriert: Freitag 2. Februar 2018, 13:43

Hallo,

folgenden Code zur XML-Anzeige habe ich mit Spyder 3 auf Fedora 27 geschrieben:

Code: Alles auswählen

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
from curses import wrapper


tree=ET.parse('/home/daniel/Dokumente/fete/test2.xml')
root=tree.getroot()

    
def main(stdscr):
    stdscr.clear()
    stdscr.addstr(root[4][0].text+"\n")
    stdscr.refresh()
    stdscr.getkey()
    return;

wrapper(main)
In der Stelle, die ausgegeben werden soll, befindet sich ein "ü". Wenn ich es aus Spyder 3 heraus ausführe, was einfach ein ganz normales System-Terminal öffnet, funktioniert alles einwandfrei. Wenn ich es aber manuell in einem Terminal ausführe, bekomme ich folgende Meldung:

Code: Alles auswählen

[daniel@localhost ~]$ python /home/daniel/Dokumente/test.py
Traceback (most recent call last):
  File "/home/daniel/Dokumente/test.py", line 17, in <module>
    wrapper(main)
  File "/usr/lib64/python2.7/curses/wrapper.py", line 43, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/daniel/Dokumente/test.py", line 12, in main
    stdscr.addstr(root[4][0].text+"\n")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 34: ordinal not in range(128)
Curses brauche ich später für andere Dinge, das hier ist nur ein Minimalbeispiel, da würde print natürlich reichen.

Hat jemand eine Idee?
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sieht so aus, als ob deine Terminal-Settings nicht stimmen. Bei mir ist LANG zB en_US.UTF-8. Wenn das bei dir nur das C-locale ist, waere das zB eine Erklaerung.

Was macht denn

print("\u00fc")

bei dir? (Achtung: Python3! Wenn du Python2 benutzt, bitte ein u for den String stellen!)
daniel2
User
Beiträge: 2
Registriert: Freitag 2. Februar 2018, 13:43

Wenn das Terminal aus Spyder 3 heraus geöffnet wird, ergibt print("\u00fc") ein "ü", wenn ich das Terminal selbst starte ergibt es ein "\u00fc". In den Terminaleinstellungen ist UTF-8 eingestellt.

EDIT: Sorry, ich hab dummerweise im Terminal nur "python" eingegeben, was dazu geführt hat, dass Python 2 verwendet wurde. Jetzt wo ich Python 3 verwende, funktioniert es. Danke für die Hilfe.
Antworten