728x90
UnicodeEncodeError: 'ascii' codec can't encode character
오류는 파이썬이 문자열을 ASCII 인코딩으로 변환하려 할 때, 해당 문자에 ASCII 범위를 초과하는 문자가 포함되어 있을 경우 발생합니다. 특히 한글이나 특수문자, 이모지 등은 ASCII 코드에서 지원되지 않기 때문에 이 오류가 자주 발생합니다.
이 오류는 파일 저장, 출력 또는 외부 시스템에 데이터를 전송할 때 기본 인코딩 설정이 ASCII로 되어 있을 경우 발생하기 쉽습니다. 파이썬 2에서 자주 발생했으며, 파이썬 3에서도 인코딩을 명시하지 않으면 여전히 발생할 수 있습니다.
● 오류 발생 예시
text = "안녕하세요"
with open("output.txt", "w") as f:
f.write(text)
기본 인코딩이 ascii
로 설정되어 있다면, '안녕하세요' 같은 한글이 포함된 문자열을 쓸 때 오류가 발생합니다.
● 해결 방법
open()
함수 사용 시encoding="utf-8"
명시- 출력 또는 전송 시 Unicode 호환 포맷 사용
- 환경 변수
PYTHONIOENCODING
설정 변경
● 예시 코드 (정상 처리)
text = "안녕하세요"
with open("output.txt", "w", encoding="utf-8") as f:
f.write(text)
이처럼 UTF-8 인코딩을 명시하면 한글, 특수문자 등을 안정적으로 파일에 저장할 수 있습니다.
● 자주 하는 실수
- 인코딩 명시 없이 파일 저장 시도
- 출력 환경이 ASCII만 지원함에도 인코딩 고려 안함
- 데이터 전송 시 문자열을 bytes로 변환하지 않음
● 결론
UnicodeEncodeError - 'ascii' codec can't encode character
오류는 문자열 처리 시 인코딩을 명확히 지정하지 않아 발생합니다. 항상 UTF-8 인코딩을 기본으로 사용하고, 국제 문자 환경을 고려하여 예외를 예방하는 습관이 필요합니다.
728x90
'프로그래밍언어 > 파이썬[Error]' 카테고리의 다른 글
[파이썬][Error] 099. TimeoutError - [Errno 110] Connection timed out (0) | 2025.05.31 |
---|---|
[파이썬][Error] 098. UnicodeDecodeError - 'utf-8' codec can't decode byte (0) | 2025.05.31 |
[파이썬][Error] 096. ValueError - failed to parse file format (0) | 2025.05.31 |
[파이썬][Error] 095. CustomError - 사용자 로그인 실패 처리 (0) | 2025.05.31 |
[파이썬][Error] 094. AuthenticationError - InvalidTokenError (0) | 2025.05.31 |