[PHP] 三码合一解决 PHP mysql 乱码

Nokia 2013/1/5 10:39 | 显示全部楼层
PHP乱码?Mysql乱码?
PHP乱码或者mysql乱码,多半是因为没有统一编码,要解决PHP/mysql乱码,只要做到三码合一即可.
所谓三码,是指文件编码,页面编码声明和数据库字符集,要使用相同的编码,如全部为utf-8.
怎么做到三码合一?下面以utf-8为例,说明如何统一编码.

1.将网页文件的编码保存为utf-8无BOM

记事本,保存文件的时候选择"编码"为utf-8
editPlus,保存时选择"encoding"为utf-8
Notepadd++,按ctrl+A全选当前文档,选择菜单栏的Encoding-->Convert to UTF-8 without BOM
UEStudio,保存时选择"格式"为utf-8无BOM其他软件请根据情况操作

2.在PHP页面的<?php ?>标签对之间使用 header('Content-type : text/html; Charset=UTF-8'); 声明页面编码为utf-8

在html头部(<head>和</head>之间)写入<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />来声明页面编码为utf-8

3.PHP页面中连接数据库服务器后执行sql查询前使用以下代码先将字符集设置为utf-8
以下方案任选一种,其中 $myqli 和 $pdo 是创建的mysqli和pdo类的对象实例
mysql_query('SET NAMES utf8'); // mysql 扩展
mysqli_query('SET NAMES utf8'); // mysqli 扩展
$mysqli->query('SET NAMES utf8'); // mysqli 扩展
$pdo->exec('SET NAMES utf8'); // PDO 扩展

4.创建数据表的时候将默认编码设置为utf8,将字符校对(callate)设置为utf8_general_ci,注意MySQL里面是utf8而不是utf-8
IF NOT EXISTS `name`(
    ....代码....
)ENGINE InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

做到这四点,相信你的网页和数据库不会再乱码.

手机版|轻松E站

返回顶部 返回列表