[Python] UnicodeEncodeError: 'utf-8' codec can't encode characters in position : surrogates not allowed 해결방법
|2024. 7. 8. 01:58
728x90
오늘은 Python에서 이모지와 관련하여 인코딩을 하는 과정에서 오류가 발생해서 해결하는 방법에 대해 소개하겠다.
오류
>>> text = "😊"
>>> print(text)
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 17-18: surrogates not allowed
이 오류는 주로 Python에서 이모지 또는 특정 유니코드 문자를 처리할 때 발생한다. 이 오류의 원인은 다음과 같다.
서로게이트 쌍 문제: UTF-16에서 사용되는 서로게이트 쌍이 UTF-8로 인코딩 되려 할 때 문제가 발생한다. Python 내부에서 UTF-16 서로게이트 쌍을 UTF-8로 직접 변환하려고 하면, UTF-8이 해당 문자를 표현할 방법이 없기 때문에 오류가 발생한다.
간단하게 말하면 UTF-16에서 사용되는 값이 UTF-8에서 지원하지 않기 때문에 문제가 발생한다.
해결방법
문자열을 정제해서 처리하면 가능하다.
# 인코딩할 수 없는 문자를 무시
clean_text = text.encode('utf-8', errors='ignore').decode('utf-8')
# 인코딩할 수 없는 문자를 �로 대체
clean_text = text.encode('utf-8', errors='replace').decode('utf-8')
다음과 같은 방법을 사용하면 처리가 가능하다.
'Coding > Python' 카테고리의 다른 글
[Python] Python에서 빠른 입출력 방법 (0) | 2024.10.06 |
---|---|
[Python] 파이썬에서 getter, setter 사용 방법(feat. Property) (1) | 2024.06.13 |
[Python] 타입 힌트를 위한 typing 모듈에 대해 알아보자 (0) | 2024.06.12 |
[Python] 'Fatal error in launcher: Unable to create process using' 오류 해결 방법 (0) | 2024.06.04 |
[Python] Progress Bar(tqdm)을 깔끔하게 출력하는 방법은 무엇일까? (0) | 2024.05.30 |