UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 9735: illegal multibyte sequence
코딩 연습/Django 2019. 4. 23. 15:36이 에러 때문에 얼마나 고생했던지 수명이 짧아졌을 정도다.
구글링을 하면 대부분이 .py
파일을 .txt
파일로 실행한 경우에 에러가 발생하는데,
나와 같은 경우 Django로 만든 웹사이트를 runserver
하면 명령프롬프트에서는 해당 에러가 나타나고,
웹브라우저에서는 A server error occurred. Please contact the administrator.
라는 문장이 노출되었다.
디버그 화면이 나와야하는데 그렇지 않아서 어떻게 손을 써야할지 몰랐다.
사실 힌트는 이미 수십번 찾았다.
open(encoding="utf-8")
템플릿의 유니코드를 utf-8로 인코딩해주는 짧은 코드를 적재적소에 작성하면 되는 것이다.
그 적재적소를 찾는데 오랜 시간이 걸린 것 같다.
[https://chibychi.blogspot.com/2019/04/django-unicodedecodeerror.html?showComment=1556001026219#c6818858330997373051\](https://chibychi.blogspot.com/2019/04/django-unicodedecodeerror.html?showComment=1556001026219#c6818858330997373051)
바로 이 분 덕분에 정확한 위치를 찾아서 코드를 집어넣었다.
가상환경 폴더에서 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)
비어있던 open()
메서드에 encoding="utf-8"
을 기입했다.
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)
가상환경 활성화를 꼭 잊지 않고 실행해야한다.
'코딩 연습 > Django' 카테고리의 다른 글
admin 설정 (0) | 2019.05.22 |
---|---|
Form을 통해 데이터 입력 받기 (0) | 2019.05.13 |
urls.py에서 인증 시스템(로그인, 로그아웃) 호출하여 사용하기 (0) | 2018.12.19 |
pip 라이브러리 정리 및 클론하기 (0) | 2018.12.11 |
회원가입시 그룹 추가시키기 (0) | 2018.12.06 |