[python-nl] unicode barf

Remco Wendt remco at diji.biz
Sat Dec 23 20:34:39 CET 2006


Het hoofdstuk over Unicode uit Dive Into Python is sowieso ook erg
nuttig: http://diveintopython.org/xml_processing/unicode.html

Je kan middels de file sitecustomize.py (ergens in je python path) er
ook voor zorgen dat je default encoding op UTF-8 staat:

# sitecustomize.py
# this file can be anywhere in your Python path,
# but it usually goes in ${pythondir}/lib/site-packages/
import sys
sys.setdefaultencoding('utf-8')

Maareh mysql ondersteunt toch ook UTF-8?

Remco

On 12/21/06, eric casteleijn <eric at infrae.com> wrote:
> Armijn Hemel wrote:
> > beste Pythonettes,
> >
> >
> > het volgende is iets waarvan ik vrees dat het een beginnersiets is, maar
> > ik zit al de hele middag m'n hoofd erop te breken.
> >
> > Met PyExpat (uit xml.dom.ext.reader) trek ik een XML bestand uit elkaar,
> > met XPath. De resultaten hiervan bevatten karakters die niet in de standaard
> > ASCII karakterset zitten en waarvoor je allemaal extra toetsen nodig hebt,
> > die niet op mijn oude SGI toetsenbord met US layout zitten ;-)
> >
> > In ieder geval, ik wil die strings graag netjes geescapet hebben (het moet
> > namelijk een MySQL databeest in), maar MySQLdb.escape_string() vindt dat niet
> > echt lief:
> >
> > UnicodeEncodeError: 'ascii' codec can't encode character u'\xb2' in position 101: ordinal not in range(128)
>
> Wat dit betekent is dat je een unicode string hebt (dat klopt dus) en
> die probeert te encoden in een encoding die geen non-ascii karakters aan
> kan. Wat je in zo'n geval wilt doen is encoden naar een andere encoding
> door zoiets te doen als:
>
> output = jouwstring.encode('UTF-8')
>
> (die 'UTF-8' kan ook een andere encoding zijn natuurlijk, je moet even
> kijken wat je database wil hebben.)
>
> De ervaring leert met unicode en python dat het vrij goed gaat met de
> volgende regels:
>
> - decodeer input naar unicode op het vroegst mogelijke moment, dus
> direct als je form  informatie binnenkrijgt bijvoorbeeld. (Soms handelt
> je applicatie framework dit al af, da's helemaal mooi.)
>
> - encodeer output op het laatst mogelijke moment.
>
> en werk verder altijd met unicode strings, dan doet python alles vanzelf
> goed.
>
> --
> - eric casteleijn
> http://infrae.com
> _______________________________________________
> Python-nl mailing list
> Python-nl at python.org
> http://mail.python.org/mailman/listinfo/python-nl
>


More information about the Python-nl mailing list