Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

html entities not converting special characters

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

like image 985
SnitramSD Avatar asked Dec 04 '25 14:12

SnitramSD


1 Answers

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 .

like image 163
Aravind.HU Avatar answered Dec 07 '25 04:12

Aravind.HU



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!