저는 PDO를 사용하여 MySQL 데이터베이스에 연결하고 있습니다. 내 연결 문자열에 이미 charset=utf8mb4
을 추가했으며 모든 데이터베이스와 테이블은 utf8mb4_unicode_ci
이지만 문제가 있습니다. 위해PHP MySQL 검색 문자 코딩 문제
나는 아래의 코드를 사용하고 content
테이블에 자신의 제목을 기준으로 항목을 검색하기 :
SELECT * FROM content WHERE title LIKE '%سيگنالها%'
키워드가 페르시아 단어입니다. 위의 코드는 정확하고 예상대로 1 개의 결과를 반환합니다.
그러나 내 PHP 응용 프로그램에서 양식을하고 중 맥 OS/윈도우 PC를 사용하거나 내가 0 결과를 얻을 안드로이드 폰을 사용하여 SAME 단어를 입력합니다.
나는이 문제를 추적했으며 사용자가 입력 한 단어가 데이터베이스에있는 단어와 완전히 똑같아 보이더라도 실제로는 이 아니며과 동일하다고 생각합니다. 이 online tool 따르면
, 그것의 سيگنالها
십진수 문자 코드
: 1587 1 61 0, 1,711, 1,606, 1,575, 1,604, 1,607, 1,575
위한 반면 سیگنالها
해당 사항 : 1587, 1 0, 1711, 1606, 1575, 1604, 1607, 1575
차이가 있습니까? 대담한 모양입니다. 실제로 두 값을 모두 복사 한 후 here에 지나면 차이점을 직접 확인할 수 있습니다.
이 성가신 문제를 해결하려면 어떻게해야합니까? 저는 PHP 7과 MariaDB 10.1을 사용하고 있습니다.
페이지 캐릭터 셋은 무엇인가 :
는 이러한 논의를 참조하십시오? 그것은 utf-8이어야하며 또한 mysql 연결 후에'SET NAMES utf8'을 실행해야합니다. 샘플 코드를 게시하십시오. – Akam@Akam'utf-8' 또한 phpmyadmin에서 위 테스트가 가능합니다. 같은 결과. – VSG24
그렇다면이 문제는 키보드 문제이며, 페르시아어 및 아랍어와 같은 유니크 (유니버설)를 사용하고 있습니다. 때로는 데이터베이스에 저장된 유니 코드 엔티티와 다른 유니 코드 엔티티가있는 키보드를 사용하는 사용자도 있지만이 문제를 해결했습니다. 문자를 공통 문자로 바꿈으로써 – Akam