解决
PHP+mysql 处理中文乱码的独家方案
本方案适用于所有页面文件均为 php(已成功测试过),如果有混合文件读者 可以亲自测试。 问题现象如下图,1 所示为修复过的头部引用文件 header.php,中文能正常 显示,2 所示为未修复过的 standard.php 页面文件。
一、为了解决
问题,首先应该设置数据库的字符编码,如下图所示,本例将 所有编码设置为 UTF-8。
同样将数据库中的所有表的字符编码设置成 UTF-8。
这样,数据库中可以正常显示中文字符了,如下图所示。
如果要导入外来数据, 也要设置好字符编码, 对于非
mysql 数据库的导入 (如 从 ACCESS 数据库中导入) ,需要设置分隔字段的字符,然后执行便可,如下图所 示。
---------------------------------------二、数据库的字符编码完成后,便要将页面文件的编码设置好。 这里的要点有如下三点 (红色为说明文字):
sql_query("SET NAMES 'utf8'");//2.引用数据库的数据时需要设置 SQL 记录集中的字符编码为 UTF8,防止中文的乱码 ?>
为了实现上述三点要求,本例采用的
方案如下: 1.创建一个数据库连接文件 conn.php,其中在开头设置 header 编码,并在 创建数据连接后设置 SQL 请求的编码,如下图所示:
2.设置页面文件的文件类型。可以在页面文件中的标签中设置字符编 码。 2.1 如果之前的字符编码为 gb2312,则该文件类型为 ANSI(本例使用 DW 和 notepad++软件,读者也可用 UE 编辑
软件,只不过类型显示名称不一样而已) , 如下图所示:
2.2 将标签的编码设置成 utf-8 并保存文件后,再次打开,会发现文件 类型变成了 ANSI as UTF-8,如下图所示:
3.在页面的首行引入数据链接文件 conn.php, 可以保证 conn.php 中的 header 设置字符编码成功有效,否则中文仍会出现乱码,如下图所示:
最后,就完成了字符编码的设置,看看成功后的页面吧(如下图) ,中文全 部正常显示出来了,是不是很神奇,赶快动动手来实现吧!
Ps:另外提一句,如果你想让页面的字符编码设为其他类型(如 GBK) ,则可 以按上述方案将所有的编码类型设置为 GBK 即可。