推荐:《php视频教程》
php与mysql中中文乱码问题
当用mysql搭建数据库的时候,有时会出现一些乱码问题,下面是一些解决方法。
问题一:数据库或表中的编码格式不正确
在创建数据库时,用以下代码来进行创建:
create database `test`character set 'utf8'collate 'utf8_general_ci';
建表的时候:
create table `table_name` (id varchar(40) not null primary key auto_increment,`userid` varchar(40) not null default '',) engine=innodb default charset=utf8;
这3个设置好了,mysql基本就不会出问题了,即建库和建表时都使用相同的编码格式。
如果已经创建了数据库可以用以下方法:
1.查看默认的编码格式:
mysql> show variables like "%char%"; +--------------------------+---------------+ | variable_name | value | +--------------------------+---------------+ | character_set_client | gbk | character_set_connection | gbk | | character_set_database | utf8 | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+-------------+
注:以前2个来确定,可以使用set names utf8,set names gbk设置默认的编码格式;通过workbench可以更加简单地设置数据库的编码。
执行set names utf8的效果等同于同时设定如下:
set character_set_client='utf8'; set character_set_connection='utf8'; set character_set_results='utf8';
2.查看test数据库的编码格式:
mysql> show create database test; +------------+------------------------------------------------------------------------------------------------+ | database | create database | +------------+------------------------------------------------------------------------------------------------+ | test | create database `test` /*!40100 default character set gbk */ | +------------+------------------------------------------------------------------------------------------------+
3.查看yjdb数据表的编码格式:
mysql> show create table yjdb; | yjdb | create table `yjdb` ( `sn` int(5) not null auto_increment, `type` varchar(10) not null, brc` varchar(6) not null, `teller` int(6) not null, `telname` varchar(10) not null, `date` int(10) not null, `count` int(6) not null, `back` int(10) not null, primary key (`sn`), unique key `sn` (`sn`), nique key `sn_2` (`sn`) ) engine=myisam auto_increment=1826 default charset=gbk row_format=dynamic |
问题二:php与mysql传输编码不兼容
需要在php语句中加入
mysqli_query(“set names utf8”);
mysql set names 解决乱码的原因:
http://blog.csdn.net/zsmj_2011/article/details/7943734
问题三:客户端解码问题:
加入header(‘charset=utf-8’);即可
以上就是解决php mysql中文乱码问题的详细内容。
