2011-01-05 2 views
1

내가 사용하는 파이썬 2.6.6 내 로케일 ('ko 페이지', 'UTF8')파이썬으로 utf-8 문자열을 big5로 변환하는 방법?

내가 BIG5에 UTF-8 문자열을 변환하는 여러 가지 방법을 시도하지만 작동하지 않을 수 있습니다. 그 방법을 알고 있다면, 제게 조언 해주세요. 고마워요.


소위 '單車'는 '자전거'

그것은 유니 코드 인 것을 의미에 중국 단어 \ u55ae \ u8eca

나는 str_a 일 수 있습니다 알고
str_a = u'\u55ae\u8eca' 
str_b = '\u55ae\u8eca' 
print str_a # output '單車' 
print str_b # output '\u55ae\u8eca' 

,하지만 난 원하는 str_b도 big5로 변환하십시오.

디코드, 인코딩, 유니 코드를 시험해 봅니다.하지만 여전히 작동하지 않습니다.

좋은 아이디어있으세요? 감사.

+0

"나는 디코딩, 인코딩, 유니 코드를 사용해 유니 코드 객체 str_a에서 유니 코드 코드 포인트의 순서로 그 비교 하지만 여전히 작동하지 않습니다. " 시도한 코드와 문제를 게시하십시오. UTF-8을 Big-5로 변환하지 마십시오. UTF-8을 유니 코드로 디코딩합니다. 그런 다음 유니 코드를 Big-5로 인코딩합니다. 디코딩을 게시하고 시도한 코드와 문제를 인코딩하십시오. –

+0

조언 해 주셔서 감사합니다. –

답변

5

str_b 바이트의 순서입니다 :

In [19]: list(str_b) 
Out[19]: ['\\', 'u', '5', '5', 'a', 'e', '\\', 'u', '8', 'e', 'c', 'a'] 

백 슬래시와 u 등 모든 그냥 별도의 문자가 있습니다.

In [24]: list(str_a) 
Out[24]: [u'\u55ae', u'\u8eca'] 

unicode-escape와 유니 코드 디코딩에 오작동 형성 문자열 str_b을 변환하려면 :

In [20]: str_b.decode('unicode-escape') 
Out[20]: u'\u55ae\u8eca' 

In [21]: print(str_b.decode('unicode-escape')) 
單車 
+0

굉장! 그것은 내가 원하는 대답입니다. 고맙습니다. –

3

이 작업을 수행 할 수 있어야한다 :

str_a = u'\u55ae\u8eca' 
str_b = str_a.encode('big5') 
print str_a 
print str_b.decode('big5') 
+0

그가 원하는 출력을 얻으려면'repr()'을 추가하십시오. – marcog

관련 문제