Apache 서버에서 한글명 파일 업로드시 UnicodeEncodeError 해결
한글은 항상 인코딩 때문에 문제인데, 운영하는 서버에 파일명이 한글로 된 파일을 올리면 아래처럼 UnicodeEncodeError가 나는 경우가 있다.
'ascii' codec can't encode characters in position 43-52: ordinal not in range(128)
처음에는 Python 코딩에 문제가 있는 줄 알고 한참 찾아 해맸으나 Python 문제가 아니라 locale 문제였다.
Amazon EC2의 경우 ko_KR.UTF-8 로케일이 생성되어 있지 않기 때문에, 이를 먼저 생성한다(참고).
$ locale-gen ko_KR.UTF-8
Generating locales...
ko_KR.UTF-8... done
Generation complete.
$ locale -a | grep ko_KR
ko_KR.utf8
그 다음 /etc/default/locale을 열어 아래와 같이 수정한다.
LANG="ko_KR.UTF-8"
그리고 /etc/apache2/envvars을 열어 아래를 추가하고, 나머지 export LANG들은 주석처리한다.
export LANG=’ko_KR.UTF-8'
export LC_ALL=’ko_KR.UTF-8'
export LANGUAGE=’ko_KR.UTF-8'
그리고 서버를 restart 하면 한글명 파일이 잘 업로드 되는 것을 알 수 있다.