utf-8 mit python -c

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
Bats
User
Beiträge: 11
Registriert: Dienstag 20. September 2011, 09:28

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.
deets

Womit stuerzt es ab, was ist die genaue Fehlermeldung?
Bats
User
Beiträge: 11
Registriert: Dienstag 20. September 2011, 09:28

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.
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.
Bats
User
Beiträge: 11
Registriert: Dienstag 20. September 2011, 09:28

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/
Antworten