Seite 1 von 1

Umlaute aus XML-Datei

Verfasst: Freitag 2. Februar 2018, 14:04
von daniel2
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?

Re: Umlaute aus XML-Datei

Verfasst: Freitag 2. Februar 2018, 14:12
von __deets__
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!)

Re: Umlaute aus XML-Datei

Verfasst: Freitag 2. Februar 2018, 16:31
von daniel2
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.