필자는 db에서 UTF-8 문자로 작업 해 왔으며 utf-8에서 ascii로 문자를 번역하기 전에 PHP inconv 함수를 사용하여 데이터베이스에 넣었습니다.mysql 인덱스가 UTF-8을 ASCII로 변환합니까?
이 방법은 데이터베이스를 쿼리하기 전에 쿼리를 ASCII로 변환하는 것입니다. 그러나 이제는 저에게 mysql이이 번역을한다고 믿게하는 결과를보고 있습니다.
아무도 그 말이 맞는지, 그리고 PHP에서 전체 inconv를 건너 뛸 수 있습니다 (어쨌든별로 효과적이지 않습니다).
예를 들어, 'lsci'에 대한 검색은 'Lesci'를 반환하므로 ASCII 로의 변환이 어느 시점에서 일어나고 있다고 생각하게됩니다.
테이블은 utf_8_unicode_ci로 인코딩됩니다. 필드는 전체 텍스트 인덱스가있는 varchar (255)입니다. 쿼리가 매우 간단합니다. "SELECT * FROM users where name = 'lësci'"는 'l 'sci'와 'Lesci'를 반환합니다.
방금 MySQL 5.0.75를 사용해 보았지만 설명 할 때 아무런 문제가 없습니다. 'l 'sci'와 'Lesci'는 각각의 문자열에만 일치합니다. 어떤 버전의 MySQL을 사용하고 있는지, 그리고 테이블 정의와 문제를 보여주는 쿼리의 예와 같은 세부 사항을 더 줄 수 있습니까? –
감사합니다 빌, MySQL 5.027을 사용하고 있습니다. 이 테이블은 utf_8_unicode_ci로 인코딩됩니다. 이 필드는 전체 텍스트 인덱스가있는 varchar (255)입니다. 쿼리가 매우 간단합니다. "SELECT * FROM users where name = 'lësci'"는 'l 'sci'와 'Lesci'를 반환합니다. – pedalpete
설명하는 동작을 여전히 재현 할 수 없습니다. 데이터 정렬은 이름을 지정했지만 문자 세트는 지정하지 않았습니다. "'SHOW CREATE TABLE users'의 결과를 알려주시겠습니까? 또한 세션의 문자 세트 및 데이터 정렬은 무엇입니까 (예 : 'SET NAMES'명령을 수행 했습니까)? –