Mal wieder encodings utf-8 Fehler

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
polarsonnenschein
User
Beiträge: 18
Registriert: Mittwoch 16. November 2005, 10:29

Mittwoch 1. Februar 2006, 10:13

Hallo,

habe mal wieder ein Encodingproblem:

Bertriebssystem Linux. Script als iso-8859-1 encodiert.

Ich möchte nun eine Datei aus Datenbankinhalten ERZEUGEN
und in eine XML-Datei mit encoding utf-8 schreiben.

(Im Beispiel ist das Datenbankobjekt durch einen String ersetzt. Also ein
"u" voranstellen hilft nix )

Ich habe keine Ahnung woran es liegt.

Ich erhalte den Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "test.sbl", line 40, in ?
    test_text ()
  File "test.sbl", line 30, in test_text
    s_ISO_BIZ_1_zusatz = str(s_text1).decode("utf-8")
  File "/cc3.45/E027/cx/sbl/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 7-8: invalid data
Traceback (most recent call last):
  File "test.sbl", line 40, in ?
    test_text ()
  File "test.sbl", line 30, in test_text
    s_ISO_BIZ_1_zusatz = str(s_text1).decode("utf-8")
  File "/cc3.45/E027/cx/sbl/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 7-8: invalid data
Error in evalueating test.sbl

Quellcode:

Code: Alles auswählen

# -*- coding: iso-8859-1 -*-

import time
import xml.dom.minidom
import codecs


S_PRAEFIX_T = "T09T"

def test_text ():
        #{

        # locals
        s_ISO_BIZ_1_zusatz = ""

        s_text1 = "Lieber Überlich Ünterlich Öberlich "

        TEST_T = xml.dom.minidom.Document()

        sx_xmlfile_T = TEST_T.createElementNS("","sx_xmlfile") ; 
        TEST_T.appendChild(sx_xmlfile_T)


        S_FILE_NAME_TEST_T = (  str(S_PRAEFIX_T) + "4711" + ".xml" )

        S_FILE_TEST_T = "/homecx/tapprich" + "/" + S_FILE_NAME_TEST_T

        #        <ATTE>
        ATTE = TEST_T.createElementNS("", "ATTE")
        sx_xmlfile_T.appendChild(ATTE)
        s_ISO_BIZ_1_zusatz = str(s_text1).decode("utf-8")

        content_ATTE = TEST_T.createTextNode(s_ISO_BIZ_1_zusatz)
        ATTE.appendChild(content_ATTE)

        TEST_T_xml = file(S_FILE_TEST_T, "w")
        TEST_T_xml.writelines(TEST_T.toxml(encoding="utf-8" ))
        TEST_T_xml.close()


test_text ()
Zuletzt geändert von polarsonnenschein am Mittwoch 1. Februar 2006, 10:22, insgesamt 1-mal geändert.
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 1. Februar 2006, 10:18

Kannst du bitte deinen Beitrag nochmal editieren und den code in [code]-Tags setzten :!:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 1. Februar 2006, 10:42

Das macht es für uns einfacher --> Codehighlighting

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 1. Februar 2006, 10:48

gerold hat geschrieben:Das macht es für uns einfacher --> Codehighlighting
Super Idee!
Ich hab es mal in VOR dem Posten lesen eingefügt, aber das liest IMHO eh keiner :(

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Mittwoch 1. Februar 2006, 22:45

polarsonnenschein hat geschrieben:Quellcode:

Code: Alles auswählen

# -*- coding: iso-8859-1 -*-

# ...

def test_text ():
        # locals
        s_ISO_BIZ_1_zusatz = ""

        s_text1 = "Lieber Überlich Ünterlich Öberlich "

        # ...

        s_ISO_BIZ_1_zusatz = str(s_text1).decode("utf-8")
Du hast eine Zeichenkette mit Umlauten in ISO-8859-1 Kodierung vorliegeb und versuchst diese als UTF-8 zu dekodieren. Das geht natürlich nicht.
polarsonnenschein
User
Beiträge: 18
Registriert: Mittwoch 16. November 2005, 10:29

Donnerstag 2. Februar 2006, 08:51

Wie muß ich es umesetzen, wenn das so nicht funktioniert ? Das ist ja meine Frage ...

Danke.

Volker
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 2. Februar 2006, 09:01


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Donnerstag 2. Februar 2006, 22:33

polarsonnenschein hat geschrieben:Wie muß ich es umesetzen, wenn das so nicht funktioniert ? Das ist ja meine Frage ...
Na, die Kodierung der Zeichenkette (ISO-8859-1) und das was Du beim dekodieren angibst (UTF-8), passen nicht zusammen. Eines davon musst Du anpassen, also entweder den Quelltext in UTF-8 speichern und den "magischen" Kommentar anpassen, oder eben von ISO-8859-1 dekodieren.
Antworten