Dateien schreiben in ISO 8859-15

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
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Hallo zusammen!

Sorry, dass ich so lange eine Antwort schuldig blieb, hatte leider keine Zeit.

Ich bin eigentlich davon ausgegangen, dass ich meiner Methode generell einen String übergebe und von der wieder einen String zurückerhalte. Diesen dann halt iso-8859-15 konform....

Wenn ich mir meine Versuche genauer anschauen komme ich irgendwie zum Schluss, dass ich mir die Doku hätte genauer durchlesen sollen! :roll:
Ich bin irgendwie intuitiv davon ausgegangen, dass unichr() und chr() prinzipiell für Zeichen bis 255 das Gleiche zurückgibt!

Code: Alles auswählen

>>> print unichr(164)
¤
>>> print chr(164)
¤
Aber das stimmt ja so nicht, da

Code: Alles auswählen

>>> type(chr(164))
<type 'str'>
>>> type(unichr(164))
<type 'unicode'>
Somit "befinde" ich mich ja in der decode-encode Geschichte -wie in dem Wikiartikel beschreiben- an unterschiedlichen Punkten. :idea:
Denke jetzt hats geschnaggelt! :wink:

@BlackJack
Würde ich das einfacher lösen können wenn ich direkt auf Bytes arbeite?
Wie gesagt ich gehe eigentlich davon aus, dass ich an die Methode einen String übergebe und auch wieder zurückbekomme und "intern" arbeite ich ja eigentlich auf Bytes, oder?

Code: Alles auswählen

# hier string
for i in xrange(0, len(data)):
  #Bytes       
  zeichenIdx = ord(data[i]) + ord(ck[i])
  if zeichenIdx > 255:
    zeichenIdx -= 256
  #String
  result += unichr(zeichenIdx)
Danke für bisher eingesetzten Hirnschmalz! :D

Gruß,
Simon
BlackJack

Wenn Du einen String zurückhaben möchtest, solltest Du das `result` vielleicht nicht als Unicode-Objekt erstellen.
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

das stimmt allerdings.... :roll:
Antworten