2010-05-18 85 views
2

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

使用Python 2.6.4在Windows下运行我可以在我的区域设置为西班牙语象下面这样:

 
>>> 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

那*的* unicode的,你只是打印字节,而不是字符。 – 2010-05-18 22:48:37

回答

2

它是Unicode - 当你在它上面调用unicode()它变成了Unicode。你可以知道,因为在与repr()一起显示的字符串前有一个u。尝试print荷兰国际集团它来代替:

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

感谢所有回复的人。丹尼尔你是正确的 - 我已经正确地转换为Unicode,但在验证我的代码时正在查看值的repr与输出版本。 – Malcolm 2010-05-19 16:54:28

0

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

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

unicode()string.decode()转换就像在你的榜样应该工作。唯一的问题应该是在你的例子中你使用默认的语言环境的编码,即使你将语言环境设置为以前不同的东西。如果您使用locale.getlocale()[1]而不是locale.getdefaultlocale()[1],则应该得到正确的结果。