Когда я вижу данные, хранящиеся в базе данных mysql, используя phpmyadmin, символы сохраняются точно как é à ç, однако, когда я использую php для отображения этих данных в html-документе, который имеет следующую структуру:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> </body> </html>
Я получил квадрат вместо акцентированного персонажа, однако у меня нет этой проблемы с любыми акцентированными символами статического содержимого, которые не были загружены из mysql на той же странице.
когда я вижу в исходном коде страницы, они кажутся одинаковыми! например:
часть статических данных в исходном коде, отображаемая как:
éçà
часть данных происхождения mysql:
éçà
я попытался заменить
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
с
<meta http-equiv="Content-Type" content="text/html; charset=windows-1552" />
и в результате я получил mysql один фиксированный, статический с квадратами!
любые подсказки?
Это довольно распространенная проблема с кодировкой, вам нужно вручную установить кодировку соединения для подключения к MySQL (это должны быть первые запросы, которые вы выполняете после установления соединения):
SET NAMES utf8; SET CHARACTER SET utf8;
А также убедитесь, что для каждой таблицы установлено значение CHARACTER SET
для UTF-8
.
Или вы также можете обновить конфигурацию сервера .
Похож на проблему неправильной настройки. Скорее всего, ваши DB или драйверы не используют UTF-8.
Тот факт, что данные, поступающие из БД, показывают ОК, когда вы переходите на windows-1552
а статические файлы не могут означать, что ваш исходный файл (правильно) находится в UTF-8, но данные из вашей БД поступают в неправильный формат кодирования.
Что бы ни происходило, придерживайтесь UTF-8.
UPDATE: существует поток, который объясняет, как автоматически установить кодировку для соединения:
Изменить символ по умолчанию MySQL на UTF-8 в my.cnf?