PHP-Mysql编码问题
这几天搞了个PHP读取excel表再读入Mysql的东西,但是被其中的中文乱码搞晕了。
通过上网翻阅不少帖子之后,思路清晰了不少,以此记录下来学习学习
需要在几个地方设置编码为UTF8
浏览器器端设置 UTF8
PHP:
.在语句最开头加入 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
或.在PHP语句中加入 header("Content-Type:text/html;charset=utf-8");
读取Excel表:
//$data->SetoutputEncoding("utf-8");
PHPExcel中支持,不用加了
Mysql中:
打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭,试过无效
1.所以:建数据库时设置编码为UTF8,该库中的表默认也就是UTF8编码了
Create/ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
更改表同理:也可以在建表语句后面加上 ENGINE=InnoDB DEFAULT CHARSET=utf8;
查看表:mysql> show create table tablename;
2.1 在PHP中加入一条 mysql_query("set names utf8")
Set names utf8 等价于以下三条语句
客户端:SET character_set_client='utf8';
连接器:SET character_set_connection='utf8';
返回值:SET character_set_results='utf8';
2.2 在PHP中加入一条 mysql_qurey("set character set utf8")
相当于2中SET character_set_connection='utf8'; 连接数据库时的编码
建库的时候不设置默认编码以后再改的时候表字段的编码还是默认的 Latin1