php操作数据库(写入后数据库显示乱码解决)

今天为这乱码用了三小时解决。

首先,看了网上的方法:把my.ini文件里面的default-character-set=gb2312 改为=utf8  character_set_server改为=utf8。

结果在mysql命令符 : mysql>show variables like "%char%";  (查看默认的编码格式),结果显示character_set_server=gb2312 不知道什么原因(重启过没有我忘了,等会再尝试一下), 。然后,索性就改回原来的gb2312把,反正也是中文显示。我就修改1、<meta>属性,2、 在把my.ini文件里面改为gb2312 , 

3、在$insert=mysql_query("insert into admin (name,pwd) values ('$name','$pwd')",$conn);前面加上一句mysql_query("set names gb2312"); (作用是设置数据库编码格式)。(对了还有一步就是修改EditPlus的文件编码有原先的utf_8改为ansi)然后重启mysql  乱码没了,能正常显示中文了。

补加:

我再次修改尝试:1、原来修改了my.ini里面的 default-character-set和character_set_server的值为utf8之后,用mysql查看默认编码格式:character_set_connection\character_set_results\ character_set_client=utf8的值全部为utf8. 而character_set_database\character_set_server的值依然是gb2312.(中间也重启了MySQL等,估计是修改不完全或者不支持修改。现在也可以显示中文了,就不进一步钻研了,赶紧继续向下学。)

 

 

网摘:

强烈建议使用utf8!!!!
utf8可以兼容世界上所有字符!!!!

但是如果你已经建了库和表可以通过以下方式进行查询。
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设置默认的编码格式;

执行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`),
UNIQUE KEY `sn_2` (`sn`)
) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |

 

 

posted @ 2014-03-10 16:37  选择了就坚持  阅读(1530)  评论(0编辑  收藏  举报