Вы должны указать кодировку текста запросов, которые вы отправляете в MySQL, например,
SET NAMES `utf8` COLLATE `utf8_unicode_ci`
Если вы этого не сделаете, MySQL может интерпретировать ваш запрос с помощью текстовой кодировки сервера по умолчанию, которая может отличаться от UTF-8, например. ISO-Latin. Поэтому в ваших таблицах будут строки, закодированные в кодировке UTF-8, но MySQL пометил их как iso-latin. Это не сильно повлияет на ваш код, потому что MySQL просто возвращает вам строки UTF-8 и вы игнорируете кодировку текста. Если вы просматриваете данные в phpMyAdmin или любом другом приложении, которое устанавливает кодировку символов соединений, вы получите искаженные строки.
С другой стороны, вы можете utf8_decode
строки запроса и utf8_encode
результат, предоставленный MySQL, и не изменять кодировку текста соединений с iso-latin. но если вы запросите другой сервер MySQL, который использует UTF-8 в качестве кодировки текста по умолчанию, вы столкнетесь с той же проблемой, наоборот. поэтому просто установите кодировку текста подключения один раз после подключения.