2013-09-26 5 views
0

우리는 csv에서 새로운 사용자를 가져와 데이터베이스에 삽입하는 cron 스크립트를 실행하고 있습니다. 이름에 특수 문자가 붙은 사용자가있을 때마다 실패하고 있지만, 왜 모든 것이 제대로 작동하는지 확인할 수있는 이유는 알 수 없습니다.mysql 특수 문자 - 잘못된 문자열 값 ' xE1n'

Siobhán 

오류 메시지 : 여기

는에 실패있어 이름의 예입니다

!! Incorrect string value: '\xE1n' for column 'firstname' at row 1 

그리고 다음 삽입하려고 데이터의 위해서 var_dump는 이름이 있습니다 Siobh을 너무 특수 문자를 자릅니다.

다음은 데이터베이스에서 'char %'와 같은 쇼 변수의 출력입니다.

character_set_client utf8 
character_set_connection utf8 
character_set_database utf8 
character_set_filesystem binary 
character_set_results utf8 
character_set_server utf8 
character_set_system utf8 
character_sets_dir /usr/share/mysql/charsets/ 

사용자 테이블의 데이터 정렬 utf8_unicode_ci

이름 및 성 컬럼의 정렬 utf8_unicode_ci

PHP 스크립트의 헤더 설정입니다 :

content-type: text/html; charset=utf-8 

그리고 때를 I 쿼리에 전달되기 전에 변수에 mb_detect_encoding()을 실행하면 UTF-8

그래서 나는 그것이 실패하고있는 이유에 관해 여기에서 아이디어를 얻지 못했다. ...

우리는 어디에서 잘못 가고 있는지에 대한 아이디어가 있습니까?

CSV 파일을 만드는 프로그램, ANSI 형식으로 파일을 생성 않습니다

감사

+0

CSV를 UTF-8로 저장 했습니까? – DanFromGermany

+0

csv는 다른 부서의 스크립트에 의해 자동으로 생성됩니다. 어쨌든 확인할까요? –

+0

텍스트 편집기로여십시오. 메모장 + + 내 요구에 맞는. 다른 스크립트가 utf-8로 저장되었는지 확인하고 복사 한 모든 데이터가 utf-8로 인코딩되었는지 확인하십시오. – DanFromGermany

답변

0

우리는 이미 코멘트에 문제를 발견, 여기에 솔루션입니다. UTF-8로 작성해야합니다.

이것은 실제 데이터 소스가 UTF-8이어야하고 모든 PHP 파일도 UTF-8이어야 함을 의미합니다.

도움이 참조 : http://www.php.net/manual/de/function.fopen.php#104325 스크립트가에서하고 CSV로 데이터를한다든지

는, 데이터 변환 또는 이미 UTF-8이 될해야합니다.