2014-09-11 3 views
0

내가 MySQL의 오류가있어 내 DB에 값을 삽입 할 때 : 내가 PDO 내가 삽입하기 위해 노력하고있어 데이터와 젠드 프레임 워크 1.10를 사용하고방지 MySQL의 일반 오류 : 1366 잘못된 문자열 값

General error: 1366 Incorrect string value: '\xE4ngen....' for .... 

을 는 UTF8의 XML 파일에서 파싱됩니다. MySQL은 5.6.14입니다.

I했습니다 또한 내 MySQL 데이터베이스, 테이블 및 열 정렬을 확인하고는 다음과 같습니다

  • 데이터베이스 : utf8_unicode_ci
  • 열 :
  • 테이블 latin1_general_ci으로 utf8_unicode_ci

내 입력은 XML 파일에서 나온다. 파일이 유효한지 확인하기 위해 iconv를 실행했다. utf8 : iconv -f UTF-8 파일 -o/dev/null 및 모든 것이 정상적으로 보이지만 fr이 오기 때문에이 XML을 정말로 신뢰할 수 없다. 내가 통제하지 않는 외부 소스.

내가 원하는 것은 모든 것을 UTF8 OK이고 어떤 인코딩 문제가있는 경우를 대비하여 MySQL에 데이터를 가져올 수 있도록이 문제를 처리하는 안전한 방법입니다 ... 어떻게 "방탄 "PHP에서이 데이터를 읽고 mysql에 삽입하는 방법?

+0

예외를 던지고 있습니까? 아니면 잘못된 인코딩을 꼭 수정해야합니까? – lxg

+0

정확 : 꼭 해결해야합니다. 소스를 신뢰할 수 없기 때문에 소스를 신뢰할 수 없으며 일부 소스는 괜찮습니다. 일부는 실제로 코드를 작성해야합니다. 가져온 데이터에 "이상한 문자"가 나타나는 문제가 있더라도 여전히 더 좋습니다. 데이터를 가져올 수없는 오늘날보다 – AlfaTeK

+0

음, 그럼 내가 너를 부러워하지 않아. 임의의 인코딩을 감지하고 적절히 변환하는 것은 재미있는 일입니다. – lxg

답변

0

특정 문자 인코딩에서 입력을 신뢰할 수 없다면 임의의 이진 데이터로 처리해야합니다. 열을 BLOB, VARBINARY 또는 BINARY 데이터 형식으로 변환하십시오.

관련 문제