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

Umlaute aus XML-Datei

Beitragvon daniel2 » Freitag 2. Februar 2018, 14:04

Hallo,

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

  1. # -*- coding: utf-8 -*-
  2. import xml.etree.ElementTree as ET
  3. from curses import wrapper
  4.  
  5.  
  6. tree=ET.parse('/home/daniel/Dokumente/fete/test2.xml')
  7. root=tree.getroot()
  8.  
  9.    
  10. def main(stdscr):
  11.     stdscr.clear()
  12.     stdscr.addstr(root[4][0].text+"\n")
  13.     stdscr.refresh()
  14.     stdscr.getkey()
  15.     return;
  16.  
  17. 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?
Benutzeravatar
__deets__
User
Beiträge: 2158
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Umlaute aus XML-Datei

Beitragvon __deets__ » Freitag 2. Februar 2018, 14:12

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

Re: Umlaute aus XML-Datei

Beitragvon daniel2 » Freitag 2. Februar 2018, 16:31

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.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Mephisto, r.barrios, Yahoo [Bot]