본문 바로가기
Python

[Python] 'SyntaxError: Non-ASCII character ... ' 한글 인코딩 에러 해결 방법

by A6K 2021. 5. 6.

파이썬 소스코드에 한글 주석을 사용하게 될 경우 인코딩 관련된 에러메시지('SyntaxError: Non-ASCII character')를 만나게 되는 경우가 있다. 예를 들어 다음 에러를 만나게 된다.

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

ASCII 코드가 아닌 문자가 파이썬 소스코드에 있어서 실행할 수 없다는 의미의 에러 메시지다. '\xec'라는 알 수 없는 바이트가 등장해서 파이썬 인터프리터가 당황한 것이다.

이 문제의 해결 방법은 매우 간단하다. 파이썬 인터프리터에게 'Non-ASCII character'가 등장할 수 있다고 미리 알려주면 된다. 파이썬 스크립트의 초반에 한글을 지원하는 인코딩을 선언해주면 깔끔하게 해결된다. 예를들어

#!/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 인코딩을 사용하고 있어 별도의 선언이 없다면 이와 같은 문제가 발생한다.


 

파이썬 스크립트 작성에 도움되는 글 모음

파이썬으로 프로그램을 작성할 때 도움되는 글들을 모아본다. Python 문법 Python 모듈

hbase.tistory.com

 

댓글