"Giovanni Bajo" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hello, > > I am trying to find a good way to portably get the output of strftime() > and put it onto a dialog (I'm using PyQt, but it doesn't really matter). > The problem is that I need to decode the byte stream returned by strftime > () into Unicode. > > This old bug: > http://mail.python.org/pipermail/python-bugs-list/2003- > November/020983.html > > (last comment) mentions that it is "byte string in the locale's encoding". > > The comment also suggests to use "mbcs" in Windows (which, AFAIK, it's > sort of an "alias" encoding for the current Windows codepage), and to > find out the exact encoding using locale.getpreferredencoding(). > > Thus, I was hoping that something like: > > strftime("%#c", localtime()).decode(locale.getpreferredencoding()) > > would work... but alas I was reported this exception: > > LookupError: unknown encoding: cp932 > > So: what is the correct code to achieve this? Will something like this > work: > > data = strftime("%#c", localtime()) > if os.name == "nt": > data = data.decode("mbcs") > else: > data = dada.decode(locale.getpreferredencoding()) > > Is this the correct way of doing it? (Yes, it sucks). > > Shouldn't Python automatically alias whatever is returned by > locale.getpreferredencoding() to "mbcs", so that my original code works > portably? > > Thanks in advance! > -- > Giovanni Bajo
Odd, what version of Python are you using? Python 2.5 works: >>> import time,locale >>> time.strftime('%#c').decode(locale.getpreferredencoding()) # cp1252 on >>> my system u'Sunday, January 27, 2008 12:56:30' >>> time.strftime('%#c').decode('cp932') u'Sunday, January 27, 2008 12:56:40' >>> time.strftime('%#c').decode('mbcs') u'Sunday, January 27, 2008 12:56:48' --Mark -- http://mail.python.org/mailman/listinfo/python-list