8 problems PHP/MySQL

I've always used ISO-8859-1 encoding, but I'm now going over to UTF-8.

Unfortunately I can't get it to work.

My MySQL DB is UTF-8, my PHP document is encoded in UTF-8, I set a UTF-8 charset, but it still doesn't work.

(it is special characters like æ/ø/å that doesn't work)

Hope you guys can help!


Make sure the connection to your database is also using this character set:

$conn = mysql_connect($server, $username, $password);
mysql_set_charset("UTF8", $conn);

According to the documentation of mysql_set_charset at php.net:

Note:
This is the preferred way to change the charset. Using mysql_query() to execute 
SET NAMES .. is not recommended.

See also: http://nl3.php.net/manual/en/function.mysql-set-charset.php

Check the character set of your current connection with:

echo mysql_client_encoding($conn);

See also: http://nl3.php.net/manual/en/function.mysql-client-encoding.php

If you have done these things and add weird characters to your table, you will see it is displayed correct.


Remember to set connection encoding to utf8 as well.

In extmysqli do $mysqli->set_charset("utf8")

In extmysql do mysql_set_charset("utf8")

With other db extensions you might have to run query like SET NAMES 'utf8'

Some more details about connection encoding in MySQL

As others point out, making sure your source code is utf-8 encoded also helps. Pay special attention to not having BOM (Byte Order Mark) - it would be sent to browser before any code is executed, so using headers or sessions would become impossible.


After connecting to db, run query SET NAMES UTF8

$db = new db(...);
$db->query('set name utf8');

and add this tag to header

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
链接地址: http://www.djcxy.com/p/25128.html

上一篇: Apache的默认编码是ISO

下一篇: 8个问题PHP / MySQL