Почему я не могу показать символ фунта (£) в HTML?

Я пытаюсь отобразить символ фунта в HTML (от PHP), но все, что я получаю, это символ с вопросительным знаком.

Ниже перечислены вещи, которые я пробовал.

В PHP:

header('Content-type: text/html; charset=utf-8');

В HTML поместите это в главный тег:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

Я попытался отобразить его с помощью функции javascript, которая преобразует его в:

&amp;#65533;

Я полагаю, это помогло бы, если бы я знал, что я делаю... но я догадываюсь, почему я задаю этот вопрос:)

Ответ 1

Усвоенное предположение: у вас есть закодированный знак ISO-8859-1 в кодировке UTF-8.

Убедитесь, что ваши данные находятся в правильной кодировке, и все будет нормально работать.

Ответ 2

Используйте &#163;. У меня была та же проблема и я решил использовать jQuery:

$(this).text('&amp;#163;');
  • Если вы попробуете это, и это не сработает, просто измените методы jQuery,
$(this).html('&amp;#163;');
  • Это всегда работает во всех контекстах...

Ответ 3

1-й: символ фунта является "специальным" char в кодировке utf8 (попробуйте сохранить £ $в файле iso-8859-1 (или iso-8859-15), и вы получите ä при кодировании с использованием заголовка)

2nd: измените вашу кодировку на utf8, создав файл. есть много способов сделать это. блокнот и блокнот ++ - великие суффиксы.

3rd: используйте ob_start(); (в php) ПЕРЕД ВАМИ ВЫЙТИ ЛЮБОЙ ВЫХОД, если вы получаете странные ошибки кодирования, например, иногда пропускать кодировку. и ДА, это решает! такие ошибки возникают, когда страница кодируется в windows-1252 (ANSI), ASCII, iso-8859-1 (5), а затем у вас есть все остальные в utf8. это ужасная ошибка и может вызвать такие странные вещи, как session_start(); не работает.

4th: другие php-решения:

utf8_encode('£');
htmlentities('£');
echo '&amp;pound;';

5: решения для javascript:

document.getElementById('id_goes_here').innerText.replace('£','&amp;pound;');
document.getElementById('id_goes_here').innerText.replace('£',"\u00A3");
$(this).html().replace('£','&amp;pound;'); //jquery
$(this).html().replace('£',"\u00A3"); //jquery
String.fromCharCode('163');

вы ДОЛЖНЫ отправить £, поэтому он восстановит сломанную кодированную кодовую точку. пожалуйста, избегайте этих решений! используйте php! эти решения показывают только, как "исправить" ошибку, а последний - только для создания хорошо закодированного char.

Ответ 4

Попробовали ли вы отобразить &pound;?

Здесь является подавляющим списком.

Ответ 5

Вы можете попробовать использовать &pound; или &#163; вместо того, чтобы вставлять символ напрямую; если вы вставляете его напрямую, вы, скорее всего, столкнетесь с проблемами кодирования, в которых ваш редактор сохраняет файл, это ISO-8859-1, но он интерпретируется как UTF-8 или наоборот.

Если вы хотите встроить его (или другие символы Юникода) напрямую, убедитесь, что вы действительно сохранили свой файл как UTF-8, и установите кодировку так же, как в заголовке Content-Type. Убедитесь, что при получении файла с сервера заголовок присутствует и исправлен, а файл не был перекодирован веб-сервером.

Ответ 6

Или для других эквивалентов кода попробуйте:

&#163;
&pound;

Ответ 7

Вам нужно сохранить файл PHP script в кодировке UTF-8 и оставить <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> в HTML.

Для текстового редактора я рекомендую Notepad ++, поскольку он может обнаруживать и отображать фактическую кодировку файла (в нижнем правом углу редактор), и вы также можете преобразовать его.

Ответ 8

Это работает во всех хром, IE, Firefox.

В поле База данных > таблицa > введите тип поля, например, установите столбец символов TO varchar(2) utf8_bin php-код:

$symbol = '£';
echo mb_convert_encoding($symbol, 'UTF-8', 'HTML-ENTITIES');
or 
html_entity_decode($symbol, ENT_NOQUOTES, 'UTF-8');

И также убедитесь, что кодировка HTML или XML кодируется = "UTF-8"

Примечание: Вы должны убедиться, что база данных, тип документа и код php имеют одинаковую кодировку

Как бы лучшее решение не использовало &pound;