Seite 1 von 1

Mal wieder encodings utf-8 Fehler

Verfasst: Mittwoch 1. Februar 2006, 10:13
von polarsonnenschein
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 ()

Verfasst: Mittwoch 1. Februar 2006, 10:18
von jens
Kannst du bitte deinen Beitrag nochmal editieren und den code in [code]-Tags setzten :!:

Verfasst: Mittwoch 1. Februar 2006, 10:42
von gerold
Das macht es für uns einfacher --> Codehighlighting

mfg
Gerold
:-)

Verfasst: Mittwoch 1. Februar 2006, 10:48
von jens
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 :(

Re: Mal wieder encodings utf-8 Fehler

Verfasst: Mittwoch 1. Februar 2006, 22:45
von BlackJack
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.

Wie muß ich es umsetzen ?

Verfasst: Donnerstag 2. Februar 2006, 08:51
von polarsonnenschein
Wie muß ich es umesetzen, wenn das so nicht funktioniert ? Das ist ja meine Frage ...

Danke.

Volker

Verfasst: Donnerstag 2. Februar 2006, 09:01
von jens

Re: Wie muß ich es umsetzen ?

Verfasst: Donnerstag 2. Februar 2006, 22:33
von BlackJack
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.