Получение € с htmlentities - PullRequest
       13

Получение € с htmlentities

3 голосов
/ 06 января 2009

Я действительно пытаюсь показать, что дарит мне 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);

и для обоих я получаю

LISBOA-VIENA DESDE 99 € TAXAS INCLU & Iacute; DAS, РЕЗЕРВ J & Aacute;

LISBOA-VIENA DESDE 99 € TAXAS INCLU & Iacute; DAS, РЕЗЕРВ J & Aacute;

Я никогда не получаю & евро;

Кто-нибудь знает, как сделать это правильно?

Ответы [ 3 ]

8 голосов
/ 06 января 2009

Какая исходная кодировка файла используется в этих выражениях?

Если вы используете Windows, высоки шансы, что файл закодирован с помощью 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.

Я также только что заметил, что в вашем примере выше отсутствуют кавычки вокруг кодировок. Это также может быть причиной неприятностей.

6 голосов
/ 06 января 2009

Используйте 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&euro; off!
1 голос
/ 06 января 2009

Это обсуждается здесь ; кажется, € (&#8364;) часто работает.

...