새 프로젝트를 하면서 이제 첫 뷰를 작성해보려고 했다.
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)