본문 바로가기
Python/Python FAQ

Python UnicodeEncodeError: 'charmap' 코덱은 문자를 인코딩할 수 없습니다., UnicodeEncodeError: 'charmap' codec can't encode characters

by 베타코드 2023. 10. 16.
반응형

질문


웹사이트를 크롤링하려고 하는데 오류가 발생합니다.

다음과 같은 코드를 사용하고 있습니다:

import urllib.request
from bs4 import BeautifulSoup

get = urllib.request.urlopen("https://www.website.com/")
html = get.read()

soup = BeautifulSoup(html)

그리고 다음과 같은 오류가 발생합니다:

File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 70924-70950: character maps to <undefined>

이를 해결하기 위해 어떻게 할 수 있을까요?


답변


저는 웹 컨텐츠를 파일에 저장할 때 동일한 UnicodeEncodeError를 받았습니다. 이를 해결하기 위해 다음 코드를 대체했습니다:

with open(fname, "w") as f:
    f.write(html)

다음과 같이 변경했습니다:

with open(fname, "w", encoding="utf-8") as f:
    f.write(html)

만약 Python 2를 지원해야 한다면, 다음을 사용하세요:

import io
with io.open(fname, "w", encoding="utf-8") as f:
    f.write(html)

만약 UTF-8이 아닌 다른 인코딩을 사용하려면, 실제 인코딩을 encoding에 지정하세요.

반응형

댓글