Я использую 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