본문 바로가기
카테고리 없음

Python UnicodeEncodeError 출력 인코딩 오류 대처법

by smartmove 2025. 5. 28.

Python UnicodeEncodeError란?

Python에서 `UnicodeEncodeError`는 문자열을 바이트로 변환(인코딩)할 때, 문자열에 포함된 문자를 지정한 인코딩 방식으로 표현할 수 없을 때 발생하는 오류입니다. 주로 한글, 특수문자 등 비 ASCII 문자를 ASCII 또는 제한된 문자 집합으로 인코딩할 때 자주 발생합니다. 이 문제를 해결하지 않으면 출력, 파일 쓰기, 네트워크 전송 등이 실패할 수 있어 적절한 대처가 필요합니다.

1. UnicodeEncodeError 발생 주요 원인

  • 출력 환경(터미널, 콘솔)의 인코딩이 제한적인 경우
  • 문자열에 인코딩 방식에서 지원하지 않는 문자가 포함된 경우
  • 파일 저장 시 인코딩 지정이 올바르지 않은 경우
  • 네트워크 전송 시 인코딩 불일치

2. UnicodeEncodeError 예시 코드


text = "안녕하세요"
print(text.encode('ascii'))  # ASCII 인코딩 불가로 에러 발생

3. UnicodeEncodeError 해결 방법

3-1. 출력 인코딩 환경 확인 및 변경

터미널이나 콘솔 인코딩이 UTF-8인지 확인하고, UTF-8로 설정하는 것이 가장 안정적입니다. Windows CMD의 경우 `chcp 65001` 명령어로 UTF-8로 변경할 수 있습니다.

3-2. 인코딩을 지원하는 문자셋 사용

문자열 인코딩 시 UTF-8, EUC-KR 등 지원 범위가 넓은 인코딩을 사용하세요.

text = "안녕하세요"
encoded = text.encode('utf-8')  # 안전한 인코딩
print(encoded)

3-3. 예외 처리 및 인코딩 옵션 활용

인코딩 시 오류를 무시하거나 대체하는 옵션을 지정할 수 있습니다.

# 오류 무시
encoded = text.encode('ascii', errors='ignore')

# 대체 문자로 변경
encoded = text.encode('ascii', errors='replace')

3-4. 파일 쓰기 시 인코딩 명시

파일에 문자열을 저장할 때 인코딩 방식을 반드시 지정해야 합니다.

with open('output.txt', 'w', encoding='utf-8') as f:
    f.write(text)

3-5. 출력 시 디코딩 문제 해결

출력할 때 문자열을 직접 출력하고, 바이트 출력은 디코딩 후 출력하도록 합니다.

print(text)  # 문자열 그대로 출력 권장

4. 요약 및 결론

  • 출력 환경 인코딩을 UTF-8로 설정해 호환성을 높인다.
  • 문자열 인코딩 시 UTF-8과 같은 범용 인코딩을 사용한다.
  • 인코딩 에러 발생 시 예외 처리 옵션을 활용한다.
  • 파일 저장 시 인코딩을 명확히 지정한다.
  • 출력 시에는 문자열 그대로 출력하는 방식을 권장한다.
이 방법을 따르면 Python에서 발생하는 UnicodeEncodeError 문제를 효과적으로 해결하고, 다양한 문자 출력 및 저장이 원활해집니다.