Eric Casteleijn 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
>
>
>------------------------------
Ik heb mij ook net druk gemaakt over encoding problemen.
Een mooie, duidelijke en uitgebreide uitleg in het engels is te vinden op
http://www.pyzine.com/Issue008/Section_Articles/article_Encodings.html
Eric's regels hierboven zijn goud waard!
Let op bij print statements en operaties waarbij strings gemanipuleerd worden,
Python
zal dan soms impliciet de string decoderen of coderen van/naar de standaard
codering (bij jou waarschijnlijk ascii)
groetjes,
Tist Verdonck
_______________________________________________
Python-nl mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-nl