Използвам PDO, за да се свържа с MySQL база данни. В моя низ за връзка вече добавих charset=utf8mb4
и всичките ми бази данни и таблици са utf8mb4_unicode_ci
, но съм изправен пред проблем.
За да търся записи въз основа на тяхното заглавие в таблица content
, използвам кода по-долу:
SELECT * FROM content WHERE title LIKE '%سيگنالها%'
ключовата дума е персийска дума. Сега горният код връща 1 резултат, който е правилен и според очакванията.
Но Ако направя формуляр в моето PHP приложение и въведа СЪЩАТА дума или чрез компютър с macOS/Windows, или като използвам телефон с Android, получавам 0 резултата.
Проследих този проблем и изглежда, че въпреки че думите, въведени от потребителя, изглеждат абсолютно същите като тези, които вече са в базата данни, те всъщност НЕ са същите.
Според този онлайн инструмент кодът на десетичния знак
за سيگنالها
е: 1587, 1610, 1711, 1606, 1575, 1604, 1607, 1575
Докато
за سیگنالها
е: 1587, 1740, 1711, 1606, 1575, 1604, 1607, 1575
Забелязахте ли разликата? Това е в удебелен шрифт. Всъщност, ако копирате и двете стойности и ги поставите в тук, ще видите разликата за себе си.
Какво мога да направя, за да реша този досаден проблем? Използвам PHP 7 и MariaDB 10.1.
SET NAMES utf8
след mysql връзка. моля, публикувайте примерен код. - person Akam   schedule 06.09.2017utf-8
също така горното може да се тества в phpmyadmin. Същите резултати. - person Vahid Amiri   schedule 06.09.2017ي
, който беше записан в базата данни, докато трябваше да бъдеی
- person Vahid Amiri   schedule 06.09.2017