Résumé
Sorry guys, it's been a very long time since I wrote anything, as I was suffering from fever, LoL. 🤣
The title of the post is really deceiving I agree. It is not about my CV or “Résumé” really. 😳 Rather, it is about the recent adventure I went through, when I was working with our very own PHP & MySQL data. Well, this is what happened. I had stored some Unicode Content (UTF-8) into the Database 🛢️ (the real use-case here was German and French names) and when they were echoed in PHP, they were looking like:
The code behind was rather simple. 🤦🏻♂️
<?php
$result = mysqli_query($conn, "SELECT `Content` FROM `Table` WHERE `ContentID` = 1");
$data = mysqli_fetch_assoc($result);
echo $data["Content"];
?>
The interesting part was, when I was just using this code, I was getting the right one this way:
But, the moment I used the <!DOCTYPE html>
and other semantic tags, it went back to being:
I couldn't find out the real reason behind why it was behaving this way. 🤔 But I did try these things:
- Set the MySQL Content Encoding as UTF8-MB4 General.
- Programatically set the above using
mysqli_set_charset($link, 'utf8mb4');
. - Gave a
<meta />
tag that instructs the browser that the content is incharset="utf-8"
. - Tried server side variant of the above using
header('Content-Type: text/html; charset=utf-8');
. - Tried variants of
htmlspecialchars
,htmlentities
, etc. without any luck.
But nothing worked. 👎🏻 Finally, I was checking what would be the right way of displaying and found out another nice example in PHP. It is none other than mb_convert_encoding
, which saved my life. So while echoing out stuff, I called them this way:
echo mb_convert_encoding($data["Content"], 'UTF-8', 'ISO-8859-1');
Even though it was slightly longer than the traditional echo
, this saved my back today. 😁 Do you have any similar stories? Please pen them down in the comments section! 💬