Я действительно пытаюсь показать, что дает мне htmlentities, но это не дает & euro; для символа €.
я пытаюсь
echo htmlentities(htmlentities("LISBOA-VIENA DESDE 99€ TAXAS INCLUÍDAS, RESERVE JÁ",ENT_COMPAT,ISO-8859-1),ENT_COMPAT,ISO-8859-1);
echo '<br>';
echo htmlentities(htmlentities("LISBOA-VIENA DESDE 99€ TAXAS INCLUÍDAS, RESERVE JÁ",ENT_COMPAT,UTF-8),ENT_COMPAT,UTF-8);
и для обоих я получаю
ЛИСБОА-ВЕНА ОТКАЗЫВАЕТСЯ НАЛОГООБЛОЖЕНИЯ 99 € ВКЛЮЧЕНЫ & Iacute; DAS, RESERVE J & Aacute;
ЛИСБОА-ВЕНА ОТКАЗЫВАЕТСЯ НАЛОГООБЛОЖЕНИЯ 99 € ВКЛЮЧЕНЫ & Iacute; DAS, RESERVE J & Aacute;
Я никогда не получаю & евро;
Кто-нибудь знает, как это сделать правильно?






Используйте ISO-8859-15 вместо ISO-8859-1.
ISO-8859-15 (ISO Latin 9) отличается от ISO-8859-1 (ISO Latin 1) и добавляет знак евро, а также французские и финские буквы, отсутствующие в Latin-1 (ISO-8859-1).
echo htmlentities('Working htmlentities() now 99€ off!', ENT_COMPAT, 'ISO-8859-15');
должен вернуться
Working htmlentities() now 99€ off!
Это обсуждается здесь; вроде € (€) работает часто.
Какова исходная кодировка файла, в котором вы используете эти операторы?
Если вы используете Windows, велики шансы, что файл закодирован с помощью Окна-1252 (CP1252), а не ISO-8859-1, ISO-8859-2 или UTF-8.
Знак € - это 0x80 в Windows-1252, ISO-8859-15 кодирует знак € с помощью 0xA4, в то время как ISO-8859-1 вообще не имеет знака € (увидеть ответ от Арона Роттевила).
Вы должны убедиться, что вы передаете правильную кодировку, используемую для строки, в htmlentities(). Лучше всего использовать кодировку UTF-8 для всех ваших файлов.
Если htmlentities("LISBOA-VIENA DESDE 99€ TAXAS INCLUÍDAS, RESERVE JÁ",ENT_COMPAT,'Windows-1252') работает, значит, вы используете кодировку CP1252.
Я также только что заметил, что вам не хватает кавычек в кодировках в приведенном выше примере. Это тоже могло быть причиной неприятностей.