I'm using htmlentities which is converting characteres with accents, but it is not converting this type of quotes “. Instead the browser shows a weird symbol with a question mark �
How can I convert these kind of characteres that display as symbols? e.g. The book called �Hello Colors� is on the table.
I've tried this commands but it's not working:
htmlentities($message);
htmlentities($message, ENT_QUOTES, 'UTF-8');
htmlentities($message, ENT_NOQUOTES, 'UTF-8');
htmlentities($message, ENT_COMPAT, 'UTF-8');
Thank you.
I just realised something weird, if I do the following
echo $message; die();
to show a white page for debugging the quotes are displayed! So what is happening? Why it's not displaying correctly in the website page? :S
Looks like you have missed charset specification in your browser ,
try adding <meta charset="UTF-8">
this in your webpage head section . I previously had an issue like this to display multilingual text in UTF -8 I did the same to solve this issue .
hope this helps
BTW
for HTML 5
<meta charset="UTF-8">
works
in case of HTML 4
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
and in case of XML you have to specify
<?xml version="1.0" encoding="UTF-8"?>
Here is the place where you can get all information
Declaring character encodings in HTML
There are several ways to setup the content charset , even you can setup your server also to render always utf-8 you can read here for more info in the server setup section
EDIT : -
After conversation with you in the comment section ,
Your problem is with Joomla
you tested by putting charset ISO-8859 in the webpage and it works this clearly proves that you are getting content in ISO not in UTF-8
probabily your mysql Database is not in UTF-8 I think and that is why it is sending ISO text to front , you can change the DB to UTF-8 general-ci or ISO latin1 which ever is feasible and that works I suggest you to change DB to utf-8-general-ci since you already have html pages with header set to utf-8 and that will solve your problem .
Also if you cant change the DB then you already know that its in ISO charset so change all your Joomla template header to ISO charset .
which looks like this
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
OR
in php
header('Content-Type: text/html; charset=iso-8859-1');
by removing your charset utf-8 declaration which is existing .