Эта проблема возникает при попытке отобразить данные в кодировке UTF-8 как не-UTF-8.Вы должны убедиться, что все кодировки символов согласованы, а если нет, то вы соответствующим образом конвертируете их.Самый простой способ - убедиться, что абсолютно все находится в UTF-8.Это включает в себя:
- Данные, сохраненные в базе данных (набор символов / сопоставление MySQL)
- Клиентское соединение с базой данных (с использованием
SET NAMES UTF-8
) - Вывод в браузер (
header('Content-Type: text/html; charset=utf-8');
) - PHP-скрипт, содержащий код (да, это иногда оказывает влияние)
Сначала я бы предложил проверить, что нетлюбой mojibake в вашей базе данных (например, используя phpMyAdmin или клиент командной строки), прежде чем проверять наборы символов выше.Если вы обнаружите, что база данных на самом деле содержит £
, то я бы предложил применить ту же логику выше к любому механизму input для базы данных (включая кодирование символов HTML-форм).
(Примечание. Я использовал MySQL на протяжении всего этого ответа.)