Всем привет, написал парсер для телеграм, который парсит информацию о каналах и все сообщения в них. Сначала у меня была кодировка utf8general_ci. Но при парсинге выкидывало ошибку на некоторые символы, и посоветовали использовать более позднюю реализацию utf-8 - utf8mb4_bin.
Но со временем, ошибка стала появляться вновь, посоветуйте другую кодировку,
Ошибка
Illegal mix of collations (utf8mb4_bin,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
Проблемные тексты
Для полной поддержки Unicode Вам нужно нечто вроде:
--- For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
--- For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
--- For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
--- (Don’t blindly copy-paste this! The exact statement depends on
--- the column type, maximum length, and other properties.
--- The above line is just an example for a `VARCHAR` column.)
В этой статье все неплохо расписано: How to support full Unicode in MySQL databases
Вот SQLfiddle с результатами моделирования.
Важно при вставке указать SET NAMES 'utf8mb4';
А вот SET CHARACTER SET 'utf8mb4'; - указывать не надо
Продвижение своими сайтами как стратегия роста и независимости