Возможно, у меня еще недостаточно понимания этого, поэтому я ищу небольшое направление.
Все наши таблицы показывают сопоставление latin1_swedish_ci. Вот что я вижу в переменных mysql:
collation connection utf8_general_ci
(Global value) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci
Теперь мы довольно часто видим utf8 (или, по крайней мере, контент на иностранном языке), хранящийся в БД, и он отображается правильно. Сопоставление не имеет значения для этого?
Использование чего-то вроде php addlashes() для пользовательского ввода - этого достаточно? Или это оставляет возможность инъекции?
РЕДАКТИРОВАТЬ: Итак, глядя на полный набор настроек сопоставления/кодировки, по крайней мере, в phpmyadmin, я вижу:
character set client utf8
(Global value) latin1
character set connection utf8
(Global value) latin1
character set database latin1
character set filesystem binary
character set results utf8
(Global value) latin1
character set server latin1
character set system utf8
character sets dir /usr/share/mysql/charsets/
collation connection utf8_general_ci
(Global value) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci