본문 바로가기
파이썬

파이썬 UnicodeEncodeError : 'latin-1'코덱은 문자를 인코딩 할 수 없습니다.

by º기록 2020. 10. 30.
반응형

데이터베이스에 외래 문자를 삽입하려고 할 때이 오류의 원인은 무엇입니까?

>>UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201c' in position 0: ordinal not in range(256)

그리고 어떻게 해결합니까?

감사!

 

해결 방법

 

문자 U + 201C 왼쪽 큰 따옴표는 Latin-1 (ISO-8859-1) 인코딩에 없습니다.

코드 페이지 1252 (서유럽 어)에 있습니다 . 이것은 ISO-8859-1을 기반으로하지만 0x80-0x9F 범위에 추가 문자를 넣는 Windows 관련 인코딩입니다. 코드 페이지 1252는 ISO-8859-1과 혼동되는 경우가 많으며, 페이지를 ISO-8859-1로 제공하면 브라우저가 대신 cp1252로 처리하는 불편하지만 이제는 표준 웹 브라우저 동작입니다. 그러나 실제로는 두 가지 고유 한 인코딩입니다.

>>> u'He said \u201CHello\u201D'.encode('iso-8859-1')
UnicodeEncodeError
>>> u'He said \u201CHello\u201D'.encode('cp1252')
'He said \x93Hello\x94'

데이터베이스를 바이트 저장소로만 사용하는 경우 cp1252를 사용하여 Windows Western 코드 페이지에있는 및 기타 문자를 인코딩 할 수 있습니다. 그러나 cp1252에없는 다른 유니 코드 문자는 오류를 발생시킵니다.

encode (..., 'ignore') 를 사용하여 문자를 제거하여 오류를 억제 할 수 있지만 실제로 이번 세기에는 데이터베이스와 페이지 모두에서 UTF-8을 사용해야합니다. . 이 인코딩을 사용하면 모든 문자를 사용할 수 있습니다. 또한 이상적으로 MySQL에 UTF-8 문자열을 사용하고 있다고 알려 주어야합니다 (데이터베이스 연결 및 문자열 열의 데이터 정렬을 설정하여). 그러면 대소 문자를 구분하지 않는 비교 및 ​​정렬을 올바르게 수행 할 수 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/3942888

 

 

반응형

댓글