Заменить £ на £ - PullRequest
       11

Заменить £ на £

3 голосов
/ 27 января 2012

Я пытаюсь заменить £ на £, и это не сработало.

Я пробовал:

echo str_replace("£", "£", "£3 Discount Discount");

Я также пытался html_entity_decode, который также не работал.

Ответы [ 4 ]

5 голосов
/ 27 января 2012

Эта проблема возникает при попытке отобразить данные в кодировке 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 на протяжении всего этого ответа.)

1 голос
/ 27 января 2012

Если вы можете попытаться использовать £ вместо £ символа и избавить себя от проблем.

0 голосов
/ 27 января 2012

Вместо этого вы можете попробовать очистить его в БД. Адаптируйте этот запрос под свои нужды.

UPDATE YOUR_TABLE_NAME SET THE_ROW = REPLACE(THE_ROW , '£', '£');
0 голосов
/ 27 января 2012

Попробуйте utf8_decode() вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...