카테고리 없음

파이썬 'SyntaxError: Non-ASCII character ... ' 한글 인코딩 에러 해결

드라이빙 인사이트 2019. 11. 17. 06:03
반응형

파이썬으로 프로그래밍을 하다가 SytaxError 메시지를 받게 되었다.

SyntaxError: Non-ASCII character '\xec' in file /Users/user/workspace/test/test.py on line 123, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

'Non-ASCII' 문자가 파이썬 스크립트에 있어서 실행할 수 없다는 의미의 에러메시지가 출력되었다. 소스코드를 보니 한글 주석을 사용했었고, 파이썬이 이 주석에 쓰인 한글 문자의 인코딩을 이해할 수 없어서 발생한 에러 메시지다.

 

구글링을 해보니 해결방법은 간단하다. 다음 코드처럼 스크립트의 초반에 한글을 지원하는 인코딩을 선언해주면 된다.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
...

스크립트 첫 부분에  \# -\*- coding: <encoding-name> -\*- 구문을 추가하고 실행하면 'SyntaxError: Non=ASCII character ...' 에러는 사라진다. 'utf-8' 인코딩을 사용할 수 없는 경우라면, 'euc-kr'도 있고 지원되는 인코딩이 다양하니 찾아서 알맞은 걸 선언해주면 된다.

 

파이썬의 인코딩 설정과 관련된 내용은 PEP-263 문서를 찾아보면 잘 설명되어 있다. (https://www.python.org/dev/peps/pep-0263/)

 

참고로 python 3.X 버전에서는 기본적으로 utf-8 인코딩을 사용해서 문제가 없다. 만약 Python3 를 사용하고 있는데 이 문제를 만났다면, 첫 줄에 나와있는 파이썬 실행환경이 python 2.X 버전을 가리키고 있는게 아닌지 확인해보자. python 2.x 버전은 기본적으로 ASCII 인코딩을 사용하고 있어 별도의 선언이 없다면 이와 같은 문제가 발생한다.

반응형