2011-06-14 6 views
0

인코딩과 관련하여 질문이 있습니다. 내 MySQL 데이터베이스에서 latin1_swedish_ci (나쁜 아이디어)로 사용자를 인코딩했습니다. 이제 iPhone 응용 프로그램을 Facebook에 연결하고 친구 이름 목록을 검색합니다. 이미 내 응용 프로그램에이 친구들이 있는지 확인하고 싶습니다. 내가 쿼리를 수행 할 때 슬프게도 나는이 오류를 얻을 : 내 dabatase에인코딩에 관한 PHP 질문 (latin1_swedish_ci vs utf8_unicode_ci)

#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation 'like' 

그래서 기본적으로 내가 (UTF8에서) 페이스 북의 친구의 이름을 혼합하려고 이름을 (라틴).

전체 데이터베이스를 utf8로 마이그레이션하고 싶지 않습니다. PHP에서 이름 인코딩이 latin1과 호환되는지 또는 최소한 모든 이름을 인코딩 할 수 있는지 확인하고 싶습니다. latin1에서 쿼리를 수행하고 이름을 건너 뛰지 않으면.

이런 일이 가능한지 아는 사람이 있습니까? 감사합니다,

Masiar

+2

이 오류 –

+0

사실은 내가 할 수없는,이 요청에 각각 이름을 사용하고이 양식에 넣어 PHP 스크립트에 의해 형성된 쿼리에 이르게 쿼리를 보여주십시오'[...] OR 이름을 LIKE ". $ name." '등등 ... – Masiar

+0

왜 PHP 스크립트에 그것을 반향하지 않습니까? 그리고 열의 정확한 인코딩을 알아야합니다. 쿼리에서 열 인코딩을 혼합하고 있습니까? –

답변

1

하지 완전히 당신이 당신의 응용 프로그램에서 친구를 찾고 있습니다 방법을 잘 - 검색 상자 또는 뭔가를 통해? PHP 스크립트의 역할은 무엇입니까?

하지만 데이터베이스에 연결할 때 문자 집합과 데이터 정렬을 지정하여 문제를 해결할 수 있다고 생각합니다. 그건 그렇고, 당신이 MySQL을 사용하고 있다고 가정합니다.

DB 연결을 설정할 때마다 다음과 같은 3 가지 쿼리를 실행하십시오. 처음 2 번만 사용해도 충분할 수도 있습니다.

SET character_set_connection = utf8 
SET character_set_client = utf8 
SET character_set_results = utf8 
+0

PHP 스크립트의 역할은 iPhone에서 모든 친구의 이름이 포함 된 POST 요청을 받아 내 응용 프로그램의 데이터베이스에 일부가 있는지 확인하는 것입니다. 나는 여전히 당신의 접근 방법을 시험해야만한다. 미리 감사하라. – Masiar

+0

감사합니다! 귀하의 경우에는 character_set_connection을 latin1로 설정해야한다고 생각합니다. – Abhay