UTF-8问题PHP / MySQL

时间:2011-01-07 08:25:10

标签: php mysql utf-8

我一直使用ISO-8859-1编码,但我现在要转到UTF-8。

不幸的是我无法让它发挥作用。

我的MySQL数据库是UTF-8,我的PHP文档是用UTF-8编码的,我设置了一个UTF-8字符集,但它仍然不起作用。

(æ/ø/å这样的特殊字符不起作用)

希望你们能帮忙!

7 个答案:

答案 0 :(得分:20)

确保与数据库的连接也使用此字符集:

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

根据php.net上的mysql_set_charset文档:

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

另请参阅:http://nl3.php.net/manual/en/function.mysql-set-charset.php

使用以下方法检查当前连接的字符集:

echo mysql_client_encoding($conn);

另请参阅:http://nl3.php.net/manual/en/function.mysql-client-encoding.php

如果您已完成这些操作并在表格中添加了奇怪的字符,您会看到它显示正确。

答案 1 :(得分:9)

请记住也要将连接编码设置为utf8。

在ext \ mysqli中 $mysqli->set_charset("utf8")

在ext \ mysql中 mysql_set_charset("utf8")

使用其他数据库扩展,您可能必须运行查询 SET NAMES 'utf8'

Some more details about connection encoding in MySQL

正如其他人所指出的,确保您的源代码是utf-8编码也有帮助。要特别注意没有BOM(字节顺序标记) - 它会在执行任何代码之前发送到浏览器,因此使用标题或会话将变得不可能。

答案 2 :(得分:2)

连接到db后,运行查询SET NAMES UTF8

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

并将此标记添加到标题

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

答案 3 :(得分:1)

你有这个错误吗? MySql SELECT UNION非法混合排序错误?只需将整个mysql设置为utf 8然后

SET character_set_connection = utf8;

答案 4 :(得分:1)

连接到mysql后试试这个:

mysql_query("SET NAMES 'utf8'");

将PHP文档编码为 UTF-8,无需BOM

答案 5 :(得分:1)

我有同样的问题,但现在已经解决了。这是解决方案:

1st:更新你的表格 ALTER TABLE tbl_name 默认字符集utf8 COLLATE utf8_general_ci;

第二: 将其添加到HTML代码的head部分:

此致 Saleha A.Latif

答案 6 :(得分:1)

现在PDO是推荐的使用mysql的方法。有了它,您应该使用连接字符串来设置编码。例如:“mysql:host = $ host; dbname = $ db; charset = utf8”