본문 바로가기
파이썬

파이썬 UnicodeEncodeError : 'ascii'코덱은 위치 20의 문자 u '\ xa0'을 인코딩 할 수 없습니다 : 서 수가 범위에 없습니다 (128).

by º기록 2020. 9. 16.
반응형

다른 웹 페이지 (다른 사이트)에서 가져온 텍스트의 유니 코드 문자를 처리하는 데 문제가 있습니다. BeautifulSoup을 사용하고 있습니다.

문제는 오류가 항상 재현 가능한 것은 아니라는 것입니다. 때로는 일부 페이지에서 작동하며 때로는 UnicodeEncodeError 를 발생시켜 경고합니다. 나는 내가 생각할 수있는 모든 것을 시도했지만, 어떤 종류의 유니 코드 관련 오류없이 일관되게 작동하는 것을 찾지 못했습니다.

문제를 일으키는 코드 섹션 중 하나는 다음과 같습니다.

agent_telno = agent.find('div', 'agent_contact_number')
agent_telno = '' if agent_telno is None else agent_telno.contents[0]
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()

다음은 위의 스 니펫이 실행될 때 SOME 문자열에서 생성 된 스택 추적입니다.

Traceback (most recent call last):
  File "foobar.py", line 792, in <module>
    p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

일부 페이지 (또는 더 구체적으로 일부 사이트의 페이지)는 인코딩되고 다른 페이지는 인코딩되지 않을 수 있기 때문이라고 생각합니다. 모든 사이트는 영국에 기반을두고 있으며 영국 소비를위한 데이터를 제공하므로 내재화 또는 영어 이외의 텍스트로 작성된 텍스트 처리와 관련된 문제가 없습니다.

누구든지이 문제를 지속적으로 해결할 수 있도록이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

 

해결 방법

 


기본적으로 str 사용을 중지하여 유니 코드에서 인코딩 된 텍스트 / 바이트로 변환합니다.


p.agent_info = u' '.join((agent_contact, agent_telno)).encode('utf-8').strip()

또는 완전히 유니 코드로 작동합니다.

 

참조 페이지 https://stackoverflow.com/questions/9942594

 

 

반응형

댓글