2010-05-18 83 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],則應該得到正確的結果。