Tiny Star

❌Exception&Error/🔵Python

[❌삽질과 해결 그 사이] UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 9735: illegal multibyte sequence

청크 2024. 9. 20. 16:29

새 프로젝트를 하면서 이제 첫 뷰를 작성해보려고 했다.

URL 연결하고 어쩌구 ~ "python manage.py runserver"

 

서버실행이 더딜때 쯤.....

그 때 불안감을 엄습해오는 불길한 예감.

 

UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 9735: illegal multibyte sequence

 

??? 진짜 듣도보도 못한 에러 + 내 코드에서 터진게 아님(써놓은 코드가 없거든)

웹 브라우저에서는 저거만 내뱉고 ...

터미널에서는 저 빨간 오류만 주르륵 내뱉고....

진짜 이거 해결하다가 팀장님한테 저 집갈래요 시전하고 도망가기 직전에 해답을 찾았다.

 

우선 잘못된 인코딩 설정으로 인해 발생하는 오류고,

특히, Django가 HTML 파일을 로드할 때 파일 인코딩이 utf-8이 아닌 다른 인코딩(CP949, 주로 윈도우에서 사용되는 인코딩)으로

설정된 경우 이 오류가 발생한다고 한다.

 

 

GPT놈이 encoding을 utf-8로 설정을 해주라는데 대체 어디다 설정을 해야하나 한참 뒤적거리다가

오류가 난 debug.py폴더 우선 이동해봤다.

 

해당 폴더는 가상환경 폴더 안에 있고   Lib\site-packages\django\views\debug.py를 찾아가면 된다.

 
    def get_traceback_html(self):
        """Return HTML version of debug 500 HTTP error page."""
        with Path(CURRENT_DIR, 'templates', 'technical_500.html').open() as fh:
            t = DEBUG_ENGINE.from_string(fh.read())
        c = Context(self.get_traceback_data(), use_l10n=False)
        return t.render(c)

332번째 줄로 내려가며 이런놈이 나온다.

본능적으로 html?보자마자 이거다 싶었고.

 

gpt가 말해준 .encoding="utf-8"를 여기 어디에 넣어야 할 것 같은데,

위치를 잘 모르겠어서 구글링을 해보니 open안에다가 넣으라길래 넣었음 -> 해결 완!

    def get_traceback_html(self):
        """Return HTML version of debug 500 HTTP error page."""
        with Path(CURRENT_DIR, 'templates', 'technical_500.html').open(encoding="utf-8") as fh:
            t = DEBUG_ENGINE.from_string(fh.read())
        c = Context(self.get_traceback_data(), use_l10n=False)
        return t.render(c)