2019년 4월 4일 목요일

#Django UnicodeDecodeError (Django version 2.2 Error) + 2.2.1 vesrion 에서 fix되었습니다.


Django 2.2version이 release된 후 공부를 하던중

unicodeDecodeError를 겪었다.


일단 증상으로는


이렇게 Error가 발생하게 되면



unicodeDecodeError: 'cp949' codec can't decode byte 에러가 발생하게 되고

해당 에러가 계속 발생하여


Error를 띄워주던 Template이 이처럼 A server error occurred만 출력 된다


그래서 Error log를 추적하고
Django 2.1.8 버전과도 비교 해보니 technical_500.html file내의 239번째 line의
<span>...</span> 이 <span>…</span>로 바뀌어 있음을 확인했다


Django 2.1.8 까지는 <span> 태그 내부가 ... (dot dot dot) 으로 이루어져 있었는데

Django 2.2 부터는 <span>태그 내부가 …(ellipsis, 말줄임표) 으로 이루어져 있어

해당 태그를 읽을 때 unicode Error가 발생하였다.



그래서 <span>태그 내부를 …(ellipsis, 말줄임표) 가 아닌 ... (dot dot dot) 으로 바꿔주거나


위의 image에서와 같이 debug.py파일 331번째 line에 있는 technical_500.html을 encoding="utf-8"로 open해주면

정상적으로 Template이 출력된다





+ 혹시 설명이 부족하신 분들을 위해 상세하게 내용 추가

 
요런 unicodeDecodeError가 뜨는 경우를 보셨을껍니다.
그리고 우리의 template은
 
이런 슬픈 화면을 보여주게 됩니다

그래서 열심히 구글링을 해봤지만 마음에 드는 답변이 없어서
Error log를 열심히 보니.
Django 2.2 version부터 
가상환경\Lib\site-packages\django\views\templates 에 있는 technical_500.html의  239번째 line의 <span> 태그로 감싸진 부분이 말줄임표로 바뀌었음을 알수 있었습니다
Django 2.1.8 vesrion까지는 온점 세개였습니다ㅠㅠㅠ

그래서 해당 말줄임표를 지우고 온점 세개 ... 를 입력해주시면 unicode Error가 발생하지 않고 Error 템플릿이 뜨는 것을 확인하실 수 있습니다.


해결방법 2
가상환경\Lib\site-packages\django\views 에 있는 debug.py의 331번째 line에서 technical_500.html을 열때 open(encoding="utf-8")로 수정해주시면 technical_500.html을 수정 안해주셔도 해결됩니다.


-끝 - 

따라서 pip install django==2.1.8 로 설치를 강제해주시면 해당 unicode Error는 뜨지 않습니다

(5월 4일 기준 수정된 최신버전 2.2.1이 릴리즈되어서 그냥 pip install django해주셔도 무방합니다)



수정된 github 사항

댓글 8개:

  1. 감사합니다 사람 한 명 살리셨습니다

    답글삭제
    답글
    1. 도움이 되셨다니까 다행입니다😁

      pip insatll django==2.1.8로 다운그레이드 설치하시면 해당 에러를 사전에 방지하실 수 있으실꺼에요

      그리구 2.2.1 release 에는 해당 에러가 수정되어 배포된다고 하니 우리 2.2 버전만 조심해서 사용합시다 ㅠㅠ

      삭제
  2. 빛치치.. 감사합니다

    답글삭제
  3. 정말로... 너무 감사합니다 ㅠㅠ 정말 이걸로 너무 고생했는데 ㅠㅠ 덕분에 살았습니다.

    답글삭제
  4. 감사합니다 정말 감사합니다!

    답글삭제
  5. 와 대단하시네요.. 덕분에 수명이 길어 졌습니다. 감사합니다.

    답글삭제
  6. 사실 django 버그라 생각 못하고, 새로 받은 플러그인에서 유니코드 생각안하고 작업했나 스트레스가 삐질 삐질 올라오고 있었는데
    마음이 편안해 졌습니다.

    답글삭제

가장 많이 본 글