2013-05-02 1 views
1

UTF16-LE 인코딩으로되어있는 클라이언트로부터 CSV 파일을 매일 업로드합니다. 나는 CSV 파일의 각 줄에 iconv('UTF16-LE', 'UTF8')을 실행할 때 데이터베이스에 갈 때, 그것은 다음과 같습니다PHP/MySQL 가져 오기에 이상한 인코딩 다루기

ZAA0737

IE의 하나있다 모든 캐릭터들 사이의 것들.

나는 이것을 없애기 위해 utf8_encode와 iconv 및 다양한 인코딩 유형을 시도했습니다. 누구든지 이것에 대한 경험이 있고 알 수 없거나 지원되지 않는 인코딩을 UTF8로 변환하거나 PHP와 MySQL에서 읽을 수있는 인코딩을 변환하는 방법이 있습니까?

+0

명령 줄이나 PHP로'iconv'를 실행하고 있습니까? 문자열이 데이터베이스에 삽입되기 전에 어떤 모습입니까? – Mike

답변

2

UTF16의 문자 중 절반은 UTF8로 변환 할 수 없습니다. UTF16은 8 비트를 더합니다.

UTF16은 각 문자열 LE 또는 BE로 인코딩됩니다. 그냥 재미로 UTF16에서 UTF8 ('-LE'없음)로 변환 해 볼 수 있습니다. 고객이 LE에 대해 거짓말을했는지 여부를 알려줍니다. 그러나 데이터가 맞지 않는 경우가 가장 많습니다.

한 가지 해결책은 텍스트가 아닌 데이터베이스에 바이트 배열 (BINARY (x))으로 저장하는 것입니다.

+0

문자의 절반을 변환 할 수없는 경우에도 이러한 문자 중 어느 문자가 실제로 문자열에 사용됩니까? – Mike

+0

문자 범위를 알지 못함 - 50 % – mbarlocker

+0

기본적으로 데이터베이스가 UTF8 인 경우 UTF16으로 인코딩 된 문자열을 문자열 형식으로 저장할 수 없습니다 (즉, 이진 형식에서만 작동합니다). – jraede