2016-11-14 2 views
1

현재 파이썬 2.7을 사용하고 있으며 중국어 웹 사이트에서 웹 스크래핑을하고 있습니다.Python2.7 UnicodeEncodeError : 'ascii'코덱이 0-11 위치의 문자를 인코딩 할 수 없습니다. 서수가 범위 내에 없습니다 (128)

아래의 유니 코드를 문자열로 변환하는 방법은 무엇입니까?

간단한 STR() 함수는 작동하지 않고 UnicodeEncodeError가 말한다 : '아스키'코덱이 위치 0-11에 문자를 인코딩 할 수 없습니다 범위에서 사전에 (128)

감사를하지 서수

u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 
+0

[UnicodeEncodeError : 'ascii'코덱으로 U '\ xa0'의 위치를 ​​20 : ordinal in range (128)로 인코딩 할 수 없습니다 (http://stackoverflow.com/questions/9942594/). unicodeencodeerror-ascii-code c-cant-encode-character-u-xa0-in-position-20) – ImportanceOfBeingErnest

답변

2

문자열이 이미 인코딩되었으므로 유니 코드 개체가 아닌 바이트 개체 여야합니다. 그 문제를 대신 시도해보십시오. 즉, 당신 긁어 데이터의 repr는 다음과 같이보고한다 :

'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 

이 마음에 들지 :

u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 

는 유니 코드 개체에서 중국의 텍스트를 복구하는 방법을, 당신은 바이트로 이동 및 백업 할 수 있습니다

>>> text = u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 
>>> print text.encode('latin-1').decode('utf-8') 

中国深圳 
+0

작동합니다! 정말 고마워 –

관련 문제

 관련 문제