I converted a Joomla 1.5 site to 2.5, and just about everything is going well, but I'm fighting the display of a character. On the live site there is text like “You Agency guys are twisted.”, and it displays fine, but on the converted site that same database article displays like �You Agency guys are twisted.�.
Now, I've verified that the two elements have the exact same computed style. But it feels like a font issue. Is it maybe an issue with how Joomla 2.5 encodes that character?
After the comments I went and verified the databse. I found that the character_set_database for the old database was latin1 and not utf8, so I ran this statement:
alter database my_database default charset latin1;
and now all character set variables line up between the two database. Further, I verified that the character set for the page is utf-8 because it's emitting this <metadata> tag:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
However, the characters still aren't displaying properly.
I've also tried setting my default_charset to utf-8 for PHP:
default_charset = "utf-8"
Before adding that line there wasn't even a setting, so it would be the Apache default I'm guessing.
I've now also verified that the index.php file has a Content-Type header of text/html; charset=utf-8. But alas, these special characters still aren't displaying right.
Try running this query before anything else:
mysql_query("SET NAMES 'utf8'");
The last time I had problems with character sets it was because even though everything else was in UTF-8 (the HTML being served, the code I wrote, the database tables, etc.), the database connection was still passing everything in another charset. This should fix that.
Edit: as mentioned by @null.point3r below, using the following code is a better alternative because escaped strings might otherwise still use the wrong encoding:
$mysqli->set_charset('utf8')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With