데이터베이스에 외래 문자를 삽입하려고 할 때이 오류의 원인은 무엇입니까?
>>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
'파이썬' 카테고리의 다른 글
파이썬 set ([])은 두 객체가 같은지 어떻게 확인합니까? 이것을 사용자 정의하기 위해 객체는 어떤 메소드를 정의해야합니까? (0) | 2020.10.30 |
---|---|
파이썬 Python unittest를 사용하여 파일을 작성하는 함수의 단위 테스트를 수행하는 방법 (0) | 2020.10.30 |
파이썬 유형 힌트로 "nullable"반환 유형을 지정하는 방법 (0) | 2020.10.30 |
파이썬 Python의 바이너리 파일에서 데이터 읽기 및 해석 (0) | 2020.10.30 |
파이썬 Pandas에서 null 값을 삭제하는 방법은 무엇입니까? (0) | 2020.10.30 |
댓글