Найти * фактическую * символьную кодировку данных в БД MySQL: UTF8 Latin1 недопустимое сопоставление - PullRequest
1 голос
/ 25 августа 2010

Потратил часы на это сейчас и мог бы помочь! Наш веб-сайт запрашивает, что для столбцов в нашей базе данных установлены параметры сортировки Latin1, для запросов веб-сайтов заданы имена UTF8.

Данные на французском языке, и когда мы выполняем поиск строки, включающей символы с акцентом, мы получаем " Недопустимое сочетание параметров сортировки (latin1_swedish_ci, IMPLICIT) и (utf8_general_ci, COERCIBLE) для операции" как "" ошибка.

Если вы переходите на страницу, которая полностью загружает данные, на ней отображаются акцентированные символы, то это не проблема, это происходит только при использовании функции поиска.

Мы испробовали несколько методов, включая ALTER TABLE t1 CHANGE c1 c1 BLOB; ALTER TABLE t1 CHANGE c1 c1 НАСТРОЙКА ХАРАКТЕРА ТЕКСТА utf8;

но это повреждает данные: текст перед первым акцентированным символом в каждом поле в порядке, но затем остальная часть текста в поле полностью удаляется: «Метал» становится «М». Я использую phpMyAdmin, чтобы попытаться исправить это BTW. Не уверен, что это проблема.

Так закодированы ли данные UTF8? Если так, то почему ALTER TABLE не работает, я видел, что он упоминается как способ исправить эту проблему на очень многих веб-страницах! Если тот факт, что он не работает, означает, что данные не в кодировке UTF8, как мне узнать, что это такое?

1 Ответ

0 голосов
/ 25 августа 2010

Наличие другой кодировки между вашим сайтом и базой данных не очень хорошая идея .... чтобы избежать этой проблемы, лучше иметь все в utf8. Однако должна быть возможность конвертировать кодировку ваших таблиц, играя с сопоставлениями.

...