[FE-discuss] Don't use Windows in March ;-)

Top Page
Author: Christoph Zwerschke
Date:  
To: formencode-discuss
Subject: [FE-discuss] Don't use Windows in March ;-)
I have just stumbled over a crazy FormEncode DateValidator bug that only
appears on Windows systems in March:

----------------------------------------------------

import sys
import locale
from datetime import datetime
from formencode.validators import DateValidator

locale.setlocale(locale.LC_ALL, 'german')
print "Python", sys.version
print "Platform", sys.platform
print "Encoding", locale.getlocale()[1]
print "Month", datetime.now().strftime("%B")

# Only on a German Win XP systems in March, we get
# a UnicodeDecodeError instead of an Invalid Exception
# because Win XP uses the "cp1252" encoding
# and the month March has an Umlaut in German.

d = DateValidator(today_or_after=True)
try:
     d.to_python(datetime(2000, 1, 1))
except Exception, e:
     print "Error", e

----------------------------------------------------

The reason is that FormEncode tries to decode the output of strftime()
with utf-8, but Win XP uses cp1252. Now the month March has an umlaut in
German (März), so FormEncode tries to decode the cp1252 Umlaut as utf-8,
which fails with a UnicodeDecodeError.

The reason why FormEncode decodes the strftime() value is that it needs
to be merged into the messages which are Unicode (see also bug #1693684
at
http://sf.net/tracker2/index.php?func=detail&aid=1693684&group_id=91231&atid=596416).

The solution is to take the encoding from the current locale setting
that is used by strftime() instead of always assuming utf-8.

I have already submitted this to the SF Patch tracker:
http://sf.net/tracker2/?func=detail&aid=2666139&group_id=91231&atid=596418

-- Christoph

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
FormEncode-discuss mailing list
FormEncode-discuss@???
https://lists.sourceforge.net/lists/listinfo/formencode-discuss