我想将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'
马尔科姆
答案 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'