PHP+MYSQL乱码:原因及解决方法

GB2312和UTF-8两个字符集的区别:
GB2312是标准中文字符集,UTF-8 是UNICODE 的一种变长字符编码,即RFC 3629,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。UTF-8 是字节顺序无关的,它的字节顺序在所有系统中都是一样的,排序更加容易。因此 UTF-8 具有更高的性能。不过如果是纯英文的话,用什么都可以,用GB2312也没问题。

再分析下出现乱码的原因
MYSQL+php产生乱码原因:
1.
MYSQL数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码 .
2. MYSQL
中创建表时会让你选择一种编码 ,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
3. MYSQL
创建表时添加字段是可以选择编码的 ,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
4.
用户提交页面的编码与显示数据的页面编码不一致 ,就肯定会造成PHP页面乱码.
5.
如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.
6. PHP页面字符集不正确.
7. PHP连接MYSQL数据库语句指定的编码不正确.

 

解决方法:
拿UTF8来举例
1、 保证页面的编码
如果是html 那么别忘了在 文件开头写上
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
如果是 php那么 记得在文件最上方写上
header(”Content-type: text/html;charset=utf-8″);
同时必须保证文件的编码必须是 UTF-8。
解决方法:把文件用EditPlus或者UltraEdit等软件打开,把文件另存为,注意选择字符编码方式,选择UTF-8。

2、 保证数据库是UTF8
在添加表的时候,需要设置编码为UTF-8
如果已经添加了,那么可以在PHPMYADMIN 中查看表结构的‘整理’属性上是否为
utf8_general_ci
如果不是 请修改
ALTER TABLE ‘gbook’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
数据库和字段 的编码同理:
ALTER DATABASE ‘testdata’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
ALTER TABLE ‘ testdata’ CHANGE ‘test’ ‘test’ VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin

3、 PHP在连接数据库的时候加上一句: set names utf8
mysql_connect(’localhost’,'user’,'password’);
mysql_select_db(’mydb’);
mysql_query(”set names utf8;”); //**设置字符集***

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值