2010-05-18 5 views
2

datetime.ctime() 값을 유니 코드로 변환하고 싶습니다. 나는 아래와 같은 스페인어 내 로케일을 설정할 수 있습니다 윈도우에서 실행 파이썬 2.6.4를 사용datetime.ctime() 값을 유니 코드로 변환

: 그럼 난 ctime이 할 % A, %의 A, % B를, 그리고 %의 B를 통과 할 수

 
>>> import locale 
>>> locale.setlocale(locale.LC_ALL, 'esp') 

()에 요일과 월 이름과 약어를 구하십시오.

 
>>> import datetime 
>>> dateValue = datetime.date(2010, 5, 15) 
>>> dayName = dateValue.strftime('%A') 
>>> dayName 
's\xe1bado' 

's \ xe1bado'값을 유니 코드로 어떻게 변환합니까? 특히 어떤 인코딩을 사용합니까?

나는 다음과 같은 것을 할 수 있다고 생각하지만, 이것이 올바른 접근 방법인지 확신 할 수 없다.

 
>>> codePage = locale.getdefaultlocale()[ 1 ] 
>>> dayNameUnicode = unicode(dayName, codePage) 
>>> dayNameUnicode 
u's\xe1bado' 

말콤

+0

* is *는 유니 코드이며, 문자 대신 바이트를 인쇄합니다. –

답변

2

유니 코드 - unicode()을 호출하면 유니 코드가되었습니다. repr()으로 표시 될 때 문자열 앞에 u이 있기 때문에 알 수 있습니다. 대신 print을 사용해보십시오.

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

답장을 보내 주신 모든 분들께 감사드립니다. Daniel 당신이 맞습니다 - 올바르게 유니 코드로 변환했지만 코드를 교정 할 때 repr 대 출력 버전의 값을보고있었습니다. – Malcolm

0

이것은 아마도 당신의 OS에 따라 달라집니다. 하지만 데이터는 latin1처럼 보입니다.

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

귀하의 예제가 작동합니다에 같은 unicode() 또는 string.decode()로 변환. 유일한 문제는 로케일을 이전과 다른 무언가로 설정하더라도 기본 로케일의 인코딩을 사용한다는 것입니다. locale.getdefaultlocale()[1] 대신 locale.getlocale()[1]을 사용하면 올바른 결과를 얻을 수 있습니다.

관련 문제