将datetime.ctime()值转换为Unicode

2 投票
3 回答
2551 浏览
提问于 2025-04-15 22:52

我想把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'

Malcolm

3 个回答

0

这可能跟你的操作系统有关。不过这些数据看起来像是latin1编码。

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

unicode()string.decode() 来转换,就像你例子里那样,应该是可以的。唯一的问题是,你在例子中使用了默认的地区编码,尽管你之前已经把地区设置成了其他的。如果你用 locale.getlocale()[1] 代替 locale.getdefaultlocale()[1],那么你应该能得到正确的结果。

2

这是Unicode - 当你对它使用了unicode()这个函数后,它就变成了Unicode格式。你可以通过在用repr()显示字符串时,看到它前面有一个u来判断。试着用print来输出它看看:

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

撰写回答