将datetime.ctime()值转换为Unicode

时间:2010-05-18 22:26:17

标签: python datetime unicode

我想将datetime.ctime()值转换为Unicode。

使用在Windows下运行的Python 2.6.4我可以将我的语言环境设置为西班牙语,如下所示:

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

然后我可以将%a,%A,%b和%B传递给ctime()以获取日期和月份名称和缩写。

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

如何将's \ xe1bado'值转换为Unicode?具体来说我使用什么编码?

我想我可能会做类似以下的事情,但我不确定这是正确的做法。

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

马尔科姆

3 个答案:

答案 0 :(得分:3)

使用示例中的unicode()string.decode()进行转换应该可行。唯一的问题应该是在您的示例中使用默认语言环境的编码,即使您之前将语言环境设置为不同的地方。如果您使用locale.getlocale()[1]代替locale.getdefaultlocale()[1],则应获得正确的结果。

答案 1 :(得分:2)

它是Unicode - 当你在它上面调用unicode()时它变成了Unicode。您可以告诉我,因为当字符串显示u时,字符串前面有repr()。请改为print

>>> d = u's\xe1bado'
>>> d
u's\xe1bado'
>>> print d
sábado
>>>

答案 2 :(得分:0)

这可能取决于您的操作系统。但数据看起来像latin1。

>>> s.decode('latin1')
u's\xe1bado'