I'm developing a website in Brazilian Portuguese and I'm facing some really annoying encoding problems.
Words that should be written this way: óbito are being written this way: �bito
I have noticed that while the texts are still at the database they are ok. But when I use echo
with PHP, the encoding problem comes up.
List of things I have already done and did not help:
1- Set the PHP files to be saved as UTF-8
2- I'm using this meta tag <meta http-equiv="content-type" content="text/html; charset=utf-8" />
3- I used this SQL Queries:
CREATE DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
;
ALTER DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
;
ALTER TABLE tbl_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
;
You can change the charset using this function:
(if the function returns true it's been successful). This should fix your problems for the connection.
For older versions of PHP, you can use the following:
It seems like PHP uses latin1 by default and I can't find a way to change the default. So I guess you'll have to use
mysql_set_charset()
every time you start a new connection.Boa Sorte.
Dont try to reinvent the wheel, keep things simple: just use the following line after selecting the database:
Use this for Portuguese :
Mine is solved by putting:
in the header of the page, besides creating the tables again and changing the collation of database to
utf-8
encoding.Putting above meta tag inside
<head>
tag of your html/php document.And you also need to run this query
mysql_query("SET NAMES 'utf8'");
in your main functions file if you are using MySQL database with PHP.