UTF-8问题PHP/MySQL

Mik*_*kel 12 php mysql utf-8

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

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

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

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

希望你们能帮忙!

Ren*_*gen 21

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

$conn = mysql_connect($server, $username, $password);
mysql_set_charset("UTF8", $conn);
Run Code Online (Sandbox Code Playgroud)

根据mysql_set_charsetphp.net 的文档:

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

另见:http://nl3.php.net/manual/en/function.mysql-set-charset.php

检查当前连接的字符集:

echo mysql_client_encoding($conn);
Run Code Online (Sandbox Code Playgroud)

另见:http://nl3.php.net/manual/en/function.mysql-client-encoding.php

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

  • 请注意,从PHP 5.5.0开始,不推荐使用`mysql_set_charset`,请参阅http://php.net/manual/en/function.mysql-set-charset.php.作为参考,该页面指出:**警告此扩展自PHP 5.5.0起已弃用,将来将被删除.相反,应该使用MySQLi或PDO_MySQL扩展.** (2认同)

Mch*_*chl 9

请记住将连接编码设置为utf8.

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

在ext\mysql中 mysql_set_charset("utf8")

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

关于MySQL中连接编码的更多细节

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