将datetime.ctime()值转换为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'
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
>>>