본문 바로가기
MySql

MySQL "잘못된 문자열 값"오류를 수정하는 방법?

by 베이스 공부 2021. 2. 2.
반응형

응용 프로그램이 잘못된 문자열 값 오류로 인해 임의의 이메일을 버리는 경향이 있음을 알아 차린 후 나는 여러 텍스트 열을 utf8 열 문자 세트와 기본 열 조합 ( utf8_general_ci ) 그것을 받아 들일 것입니다. 이로 인해 대부분의 오류가 수정되었으며 비 라틴어 이메일에 도달했을 때 애플리케이션에서 SQL 오류가 발생하지 않도록했습니다.

그럼에도 불구하고 일부 이메일로 인해 프로그램이 잘못된 문자열 값 오류를 발생시킵니다. (잘못된 문자열 값 : '\ xE4 \ xC5 \ xCC \ xC9 \ xD3 \ xD8 ...'for column 'contents'at 행 1)

콘텐츠 열은 utf8 열 문자 집합과 utf8_general_ci 열 조합을 사용하는 MEDIUMTEXT 데이터 유형입니다. 이 열에는 전환 할 수있는 플래그가 없습니다.

꼭 필요한 경우가 아니라면 애플리케이션 소스 코드를 만지거나보고 싶지도 않습니다.

내가 고려한 한 가지는 바이너리 플래그가 켜진 utf8 varchar ([일부 큰 숫자])로 전환하는 것이었지만 MySQL에 익숙하지 않고 그러한 수정이 의미가 있는지 전혀 모릅니다.

 

해결 방법

 

"\ xE4 \ xC5 \ xCC \ xC9 \ xD3 \ xD8"은 유효한 UTF-8이 아닙니다. Python을 사용하여 테스트 :

>>> "\xE4\xC5\xCC\xC9\xD3\xD8".decode("utf-8")
...
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2: invalid data

데이터베이스 내에서 디코딩 오류를 방지하는 방법을 찾고 있다면 cp1252 인코딩 (일명 "Windows-1252", "Windows Western European")이 가장 관대 한 인코딩입니다. 모든 바이트 값은 유효한 코드 포인트입니다.

물론 더 이상 정품 UTF-8이나 다른 비 cp1252 인코딩을 이해하지 못할 것입니다.

 

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

 

 

반응형

댓글