본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 097. UnicodeEncodeError - 'ascii' codec can't encode character

by about_IT 2025. 5. 31.
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