2012-12-17 3 views
2

어떻게 문자열과 유니 코드를 연결하고 결과로 문자열을 얻을 수 있습니까? 나는 다음을 시도했다. 그러나 이것은 분명히 정확하지 않습니다.파이썬 : 문자열과 유니 코드를 연결하는 방법?

Traceback (most recent call last): File "", line 1, in UnicodeDecodeError: 'ascii' codec can't decode byte 0x94 in position 3: ordinal not in range(128)

>>> unicode(s, 'latin-1')+u 
u'jkl\x94\xe4poi' 
>>> (unicode(s, 'latin1')+u).encode('latin1') 
'jkl\x94\xe4poi' 
>>> print (unicode(s, 'latin1')+u).encode('latin1') 
jklöõpoi 
+1

왜 분명히 해결되지 않습니다 예를 들어

, 나는 기본적으로 cp850이? 파이썬은 기본값 (ASCII)을 사용하여 바이트 테스트를 디코딩하려했으나 실패합니다. 그런 다음'unicode()'를 사용하여)'s'를 명시 적으로 디코딩하므로 결과를 추가 할 수 있습니다. 이것이 유니 코드 데이터를 연결하는 올바른 방법입니다. * only * unicode 객체를 사용하여. –

+1

먼저 문자열을 유니 코드로 변환 하시겠습니까? –

+0

@MartijnPieters : 최종 출력의 ä가 – domruf

답변

2

을 당신은 라틴어-1에서 s를 해독하려고에게 있지만 터미널 라틴-1을 사용하지 않는 부호화; 그것이 무엇인지 알아 보려면 sys.stdin.encoding을 확인하십시오.

>>> import sys 
>>> sys.stdin.encoding 
'cp850' 
>>> s = 'jklö' 
>>> u = u'äpoi' 
>>> s 
'jkl\x94' 
>>> u 
u'\xe4poi' 
>>> print unicode(s, 'cp850') + u 
jklöäpoi 
>>> print (unicode(s, 'cp850') + u).encode('cp850') 
jklöäpoi 
1

>>> s = 'jklö' 
>>> u = u'äpoi' 
>>> print s+u 
이 읽고 베개 밑에이 보관하십시오. 이것은 극단적 인 귀중한 문서이 작동하는 것 같다

http://farmdev.com/talks/unicode/

http://docs.python.org/2/howto/unicode.html

+0

이 되었기 때문에 정확하지 않습니다.이 좋은 대화를 추가 할 수도 있습니다. http://nedbatchelder.com/text/unipain.html –

0

입니다 :

>>> l = s + u.encode('cp1252') 
>>> print l 
jklöäpoi 
>>> type(l) 
<type 'str'> 
관련 문제