From: python on
I would like to convert datetime.ctime() values to Unicode.

Using Python 2.6.4 running under Windows I can set my locale to
Spanish like below:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'esp' )

Then I can pass %a, %A, %b, and %B to ctime() to get day and
month names and abbreviations.

>>> import datetime
>>> dateValue = datetime.date( 2010, 5, 15 )
>>> dayName = dateValue.strftime( '%A' )
>>> dayName
's\xe1bado'

How do I convert the 's\xe1bado' value to Unicode? Specifically what
encoding do I use?

I'm thinking I might do something like the following, but I'm not sure
this is the right approach.

>>> codePage = locale.getdefaultlocale()[ 1 ]
>>> dayNameUnicode = unicode( dayName, codePage )
>>> dayNameUnicode
u's\xe1bado'

Feedback appreciated.

Regards,
Malcolm

From: python on
In researching a solution, I believe locale.getpreferredencoding() might
be a better choice (than locale.getdefaultlocale()[ 1 ]) for determining
a system's default encoding?

In other words change:

>>> codePage = locale.getdefaultlocale()[ 1 ]

To this:

>>> codePage = locale.getpreferredencoding()

.... in my original post's code (original post follows my signature).

Malcolm

----- Original message -----
From: python(a)bdurham.com
To: python-list(a)python.org
Date: Mon, 17 May 2010 13:54:27 -0400
Subject: Converting datetime.ctime() values to Unicode

I would like to convert datetime.ctime() values to Unicode.

Using Python 2.6.4 running under Windows I can set my locale to
Spanish like below:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'esp' )

Then I can pass %a, %A, %b, and %B to ctime() to get day and
month names and abbreviations.

>>> import datetime
>>> dateValue = datetime.date( 2010, 5, 15 )
>>> dayName = dateValue.strftime( '%A' )
>>> dayName
's\xe1bado'

How do I convert the 's\xe1bado' value to Unicode? Specifically what
encoding do I use?

I'm thinking I might do something like the following, but I'm not sure
this is the right approach.

>>> codePage = locale.getdefaultlocale()[ 1 ]
>>> dayNameUnicode = unicode( dayName, codePage )
>>> dayNameUnicode
u's\xe1bado'

Feedback appreciated.

Regards,
Malcolm

--
http://mail.python.org/mailman/listinfo/python-list

From: Jerry Hill on
On Mon, May 17, 2010 at 2:14 PM, <python(a)bdurham.com> wrote:
> In researching a solution, I believe locale.getpreferredencoding() might
> be a better choice (than locale.getdefaultlocale()[ 1 ]) for determining
> a system's default encoding?

I haven't used the locale module a lot, but it seems to me that if
you're setting the locale with locale.setlocale(), you should get the
encoding from locale.getlocale()[1].

You're not really interested in the system's default encoding at this
point, you're interested in the encoding of the locale you've
explicitly set.

--
Jerry