Seite 1 von 1

utf-8 mit python -c

Verfasst: Montag 14. November 2011, 16:11
von Bats
Hallo zusammen


Ich habe ein createProject.py-Datei welche eine Klasse CreateProject definiert. Die Datei sieht etwa so aus:

Code: Alles auswählen

# -*- coding: utf-8 -*-

import wx

class CreateProject(wx.App):
    def __init__(self):
Ich starte nun folgendes Shellscript:

Code: Alles auswählen

PYTHONIOENCODING=utf-8 python -c "import createProject
createProject.CreateProject()"
Wenn ich nun dieses Shellscript laufen lasse, stürzt das Programm ab, wenn ich Umlaute benutze (import sys; print sys.stdout.encoding; sagt utf-8).
Aber wenn ich das Programm über Eclipse starte funktioniert alles.

Ich habe keine Ahnung, wo ich noch UTF-8 einstellen kann. Hat jemand eine Idee? Möglichst soll nichts am System geändert werden, da das Programm verteilt wird.

Mein Betriebsystem ist Mac OS X 10.6.8 und ich verwende python 2.6 32 bit.

Re: utf-8 mit python -c

Verfasst: Montag 14. November 2011, 16:47
von deets
Womit stuerzt es ab, was ist die genaue Fehlermeldung?

Re: utf-8 mit python -c

Verfasst: Montag 14. November 2011, 17:24
von Bats
Traceback (most recent call last):
File "createProject.py", line 135, in createProject
w.writerow(d)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/csv.py", line 144, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
Ich will nur Daten mit Umlauten per CSV-Writer schreiben. Wie schon gesagt, wenn ich es von Eclipse starte funktioniert alles einwandfrei.

Re: utf-8 mit python -c

Verfasst: Montag 14. November 2011, 17:58
von BlackJack
@Bats: Du versuchst Unicode in den `csv.writer` zu stecken — das geht nicht. Schau mal in die Dokumentation vom `csv`-Modul, da sollte bei den Beispielen etwas dabei sein.

Re: utf-8 mit python -c

Verfasst: Mittwoch 16. November 2011, 10:14
von Bats
Ok, vielen Dank für die Antworten.

Das Problem war, dass ich das Konzept mit Unicode nicht richtig verstanden habe zusätzlich mit folgendem:

-Eclipse mit PyDev meldet gewisse Exceptions nicht die Unicode betreffen.
-Wenn in wx Umlaute verwendet werden, wird ein Unicode-String zurückgegeben.

Folgendes Dokument fand ich in diesem Zusammenhang besonders hilfreich:

http://farmdev.com/talks/unicode/