Сначала мы использовали набор символов по умолчанию для mysql, который был latin1_swedish_ci. Тогда у нас была проблема с другими языками, такими как русский и т. Д. Итак, теперь мы преобразовали таблицы в сортировку и поле в utf8_unicode_ci. Нам нужно некоторое подтверждение здесь, если мы будем придерживаться utf8_unicode_ci для поддержки всех возможных языков или для чего-то другого, такого как utf8_bin?
Следующая проблема для php-файлов, в которых мы используем mysqli, мы установили это.
if (!mysqli_set_charset($link, "utf8")) { echo("Error loading character set utf8: ". mysqli_error($link)); } else { echo("Current character set: ". mysqli_character_set_name($link)); }
Тогда для мест, где мы используем mysql, мы выполнили следующее:
mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
Проблема теперь мы находим это как довольно утомительно, и мы боимся, что мы могли бы пропустить. Можно ли установить эту настройку символа в виде файла конфигурации, например, у нас есть один для нашего соединения с db?
Не смешивайте mysql_ * с функциями mysqli_ *. Вы должны оставаться постоянными! Сначала вы используете mysqli_, а затем используете mysql_ . Это не сработает!
Вот как я это делаю:
mysqli_set_charset($Handle, 'utf8'); // <- add this too mysqli_query($Handle, "SET NAMES 'utf8';"); mysqli_query($Handle, "SET CHARACTER SET 'utf8';"); mysqli_query($Handle, "SET COLLATION_CONNECTION = 'utf8_unicode_ci';"); // might be a bit redundant but it's safe :) ... I think :)
Затем убедитесь, что вы предоставили ему UTF8.