Problem mit deutschen Umlauten

  • Hallo.

    Ich habe eine Plone 3.1.1 Installation und ein selbstgeschriebenes Produkt installiert.
    Nun habe ich das Problem, dass wenn ich eine Template aus diesem Produkt benutze und dort in die Textfelder Werte eintrage, ich beim speichern sowie anzeigen der Seite mit den Werten einen Fehler bekomme, wenn irgendwo ein deutscher Umlaut auftritt, der Fehler sieht folgendermaßen aus:


    Time 2008/08/12 13:42:10.495 GMT+2
    User Name (User Id) admin (admin)
    Request URL
    Exception Type UnicodeDecodeError
    Exception Value 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)


    Traceback (innermost last):
    Module ZPublisher.Publish, line 119, in publish
    Module ZPublisher.mapply, line 88, in mapply
    Module ZPublisher.Publish, line 42, in call_object
    Module Shared.DC.Scripts.Bindings, line 313, in __call__
    Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
    Module Products.CMFCore.FSPageTemplate, line 216, in _exec
    Module Products.CMFCore.FSPageTemplate, line 155, in pt_render
    Module Products.PageTemplates.PageTemplate, line 89, in pt_render
    Module zope.pagetemplate.pagetemplate, line 117, in pt_render
    Module zope.tal.talinterpreter, line 271, in __call__
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 891, in do_useMacro
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 536, in do_optTag_tal
    Module zope.tal.talinterpreter, line 521, in do_optTag
    Module zope.tal.talinterpreter, line 516, in no_tag
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 957, in do_defineSlot
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 536, in do_optTag_tal
    Module zope.tal.talinterpreter, line 521, in do_optTag
    Module zope.tal.talinterpreter, line 516, in no_tag
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 861, in do_defineMacro
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 957, in do_defineSlot
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 536, in do_optTag_tal
    Module zope.tal.talinterpreter, line 521, in do_optTag
    Module zope.tal.talinterpreter, line 516, in no_tag
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 536, in do_optTag_tal
    Module zope.tal.talinterpreter, line 525, in do_optTag
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 949, in do_defineSlot
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 855, in do_condition
    Module zope.tal.talinterpreter, line 346, in interpret
    Module zope.tal.talinterpreter, line 745, in do_insertStructure_tal
    Module Products.PageTemplates.Expressions, line 222, in evaluateStructure
    Module Products.PageTemplates.Expressions, line 269, in _handleText
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)


    Ich habe schon google benutzt aber keine wirklichen Ergebnisse gefunden. Kann mir bitte jemand weiterhelfen?

    Einmal editiert, zuletzt von admin (12. August 2008 um 13:55) aus folgendem Grund: Url auf Wunsch des Gastes entfernt !

  • Wie genau sieht das Template aus?
    Und Du bist Dir 100%-ig sicher, dass Du NICHT auf die Felder direkt zugreifst
    sondern ausschliesslich über die ACCESSOR METHODEN getXXXXX()?

  • Hallo,

    innerhalb meines Product Ordners habe ich einen Ordner Skin mit den entsprechenden Templates vorliegen. Nun stehen in der "Problemtemplate" TAL-Anweisungen, die aber auf Python zurückgreifen, anstatt dies nicht zu tun, hier 2 Beispielzeilen:

    <h2 tal:condition="here/getCv">Curriculum Vitae</h2>
    <div tal:condition="here/getCv" tal:content="structure python: context.cv" />

    Nur wenn Python direkt verwendet wird, erhalte ich bei Umlauten obigen Fehler.

  • Hallo,

    innerhalb meines Product Ordners habe ich einen Ordner Skin mit den entsprechenden Templates vorliegen. Nun stehen in der "Problemtemplate" TAL-Anweisungen, die aber auf Python zurückgreifen, anstatt dies nicht zu tun, hier 2 Beispielzeilen:

    <h2 tal:condition="here/getCv">Curriculum Vitae</h2>
    <div tal:condition="here/getCv" tal:content="structure python: context.cv" />

    Nur wenn Python direkt verwendet wird, erhalte ich bei Umlauten obigen Fehler.

    Schau Dir Deinen Code bitte genau an :)

    python: context.cv

    ist kein Zugriff über die Accessormethode - oder?

  • Das Problem habe ich nun gelöst indem ich einfach folgende 3 Zeilen in den .py für meine eigenen Contenttypes kopiert habe, und zwar vor dem Schema-Block:

    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")

    Jetzt funktioniert alles einwandfrei :)

  • Das Problem habe ich nun gelöst indem ich einfach folgende 3 Zeilen in den .py für meine eigenen Contenttypes kopiert habe, und zwar vor dem Schema-Block:

    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")

    Jetzt funktioniert alles einwandfrei :)

    Das ist die schlechteste Lösung für eigenen unsauberen Code!
    Wie bereits beschrieben darf der Zugriff NIEMALS direkt über die Attribute
    erfolgen sondern AUSSCHLIESSLICH über die Accessor getXXXX() Methoden.
    Alles andere ist nicht zulässig. Bitte passe Deinen Code entsprechend an.