이것은 Converting to Emoji의 후속 조치입니다. 그 질문에서, OP는 json.dumps()
인코딩 된 파일과 대리모 쌍으로 표현 된 이모티콘을 가지고 있습니다 - \ud83d\ude4f
. S/he가 파일을 읽고 이모티콘을 올바르게 번역하는 데 문제가 있었으며 올바른 answer은 파일의 각 줄에 json.loads()
이었고 json
모듈은 서로 게이트 쌍을 다시 (UTF8로 인코딩 된 것으로 가정합니다) 변환을 처리합니다. 그림 이모티콘. 그래서 여기Python에서 서로 게이트 쌍을 사용하는 방법은 무엇입니까?
내 상황 : 그것에서 emoji의 표현을 얻을 수
emoji = "This is \ud83d\ude4f, an emoji."
가 어떻게이 문자열을 처리 할 : 나는 그것에 대리 쌍 단지 일반 파이썬 3 유니 코드 문자열이 있다고 ? 나는 이런 식으로 뭔가를 얻을 찾고 있어요 : 나는 시도했다
"This is , an emoji."
# or
"This is \U0001f64f, an emoji."
:
print(emoji)
print(emoji.encode("utf-8")) # also tried "ascii", "utf-16", and "utf-16-le"
json.loads(emoji) # and `.encode()` with various codecs
일반적으로 나는
UnicodeEncodeError: XXX codec can't encode character '\ud83d' in position 8: surrogates no allowed
과 유사한 오류가 발생합니다.
나는 리눅스에서 파이썬 3.5.1을 실행 중이고 은 en_US.UTF-8
으로 설정되어 있습니다. 이 샘플은 명령 행의 Python 인터프리터와 Sublime Text에서 실행되는 IPython에서 모두 실행되었습니다. 차이점이없는 것으로 보입니다. 및 메모리 (파이썬 소스 코드에서 문자열 리터럴을 사용하여 지정)을 단일 문자 u'\ud83d'
:
굉장합니다, 감사합니다! 나는'surrogatepass' 에러 핸들러를 놓치고있었습니다. – MattDMo