In a php page I am displaying some hard coded french texts which has some accented characters like "é è ..." and also some french characters are fetched from Mysql table and displayed on the page.
Here the problem was the hard coded french characters were displaying fine, but the characters fetch from db was not showing properly. It was displaying like "?" with in a black background.
at the top of the page I had set the the meta tag with charset as utf-8
<meta http-equiv="content-type" content="text/html;charset=utf-8">
but this didn't worked
So i tried to change the charset definition of MySQL table by the steps given below
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
to change the DB table's default charset to utf-8:
ALTER TABLE tbl_name
CHARACTER SET utf8,
COLLATE utf8_general_ci;
to know the charset of your mysql table check the steps given here
Unfortunately this charset change procedure also didn't gave me the expected result, so I tried a php level implementation using the built in function utf8_encode()
I just passed the french string fetched from the mysql table through the utf8_encode
this solved the issue.
The problem occurred because, there is already charset utf-8 declaration at the top of the page using the meta tag
and when the French data is fetched from the table, it is also in utf-8 and a double encoding took place
Code looks similar to this:
------
-----
Your french hard coded characters comes here
-----
-----
fetch data from your mysql table
-----
$var=utf8_encode($rw["MyData"]);
-----
echo $var;
------
Reference : http://www.php.net/manual/en/function.utf8-encode.php
Here the problem was the hard coded french characters were displaying fine, but the characters fetch from db was not showing properly. It was displaying like "?" with in a black background.
at the top of the page I had set the the meta tag with charset as utf-8
<meta http-equiv="content-type" content="text/html;charset=utf-8">
but this didn't worked
So i tried to change the charset definition of MySQL table by the steps given below
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
to change the DB table's default charset to utf-8:
ALTER TABLE tbl_name
CHARACTER SET utf8,
COLLATE utf8_general_ci;
to know the charset of your mysql table check the steps given here
Unfortunately this charset change procedure also didn't gave me the expected result, so I tried a php level implementation using the built in function utf8_encode()
I just passed the french string fetched from the mysql table through the utf8_encode
this solved the issue.
The problem occurred because, there is already charset utf-8 declaration at the top of the page using the meta tag
and when the French data is fetched from the table, it is also in utf-8 and a double encoding took place
Code looks similar to this:
------
-----
Your french hard coded characters comes here
-----
-----
fetch data from your mysql table
-----
$var=utf8_encode($rw["MyData"]);
-----
echo $var;
------
Reference : http://www.php.net/manual/en/function.utf8-encode.php
Comments
Post a Comment