AntonioCS
AntonioCS

Reputation: 8496

Getting the € with htmlentities

I am really trying to show what htmlentities gives me, but it doesn't give & euro; for the € character.

I am trying

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);

and for both I get

LISBOA-VIENA DESDE 99€ TAXAS INCLU& Iacute;DAS, RESERVE J& Aacute;

LISBOA-VIENA DESDE 99€ TAXAS INCLU& Iacute;DAS, RESERVE J& Aacute;

I never get a & euro;

Anyone know how to get this right?

Upvotes: 3

Views: 6212

Answers (3)

Stefan Gehrig
Stefan Gehrig

Reputation: 83622

What is the original file encoding of the file in which you use these statements?

If you're on Windows chances are high that the file is encoded with Windows-1252 (CP1252) and not in ISO-8859-1, ISO-8859-2 or UTF-8.

The sign is 0x80 in Windows-1252, ISO-8859-15 encodes the sign with 0xA4 while ISO-8859-1 doesn't have a sign altogether (see answer from Aron Rotteveel). You must ensure that you pass the correct charset used for the string into htmlentities(). Best practice would be to use UTF-8 encoding for all of your files.

If htmlentities("LISBOA-VIENA DESDE 99€ TAXAS INCLUÍDAS, RESERVE JÁ",ENT_COMPAT,'Windows-1252') works then you're using the CP1252 charset.

I also just noticed that you're missing quotes around the charsets in your example above. This could also be the cause of trouble.

Upvotes: 8

Dr. Hans-Peter St&#246;rr
Dr. Hans-Peter St&#246;rr

Reputation: 25976

This is discussed here; it seems € (&#8364;) works often.

Upvotes: 1

Aron Rotteveel
Aron Rotteveel

Reputation: 83173

Use ISO-8859-15 instead of ISO-8859-1.

ISO-8859-15 (ISO Latin 9) differs from ISO-8859-1 (ISO Latin 1) and adds the Euro sign and French and Finnish letters missing in Latin-1 (ISO-8859-1).

echo htmlentities('Working htmlentities() now 99€ off!', ENT_COMPAT, 'ISO-8859-15');

should return

Working htmlentities() now 99&euro; off!

Upvotes: 6

Related Questions