码迷,mamicode.com
首页 > 数据库 > 详细

关于MySQL字符集问题【已解决】

时间:2014-10-28 23:41:13      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   os   ar   使用   for   

先来看看我的字符集设置

bubuko.com,布布扣

全都是utf8.这里没有什么问题

接下来我创建了一个数据表book.来看下我创建的表结构

bubuko.com,布布扣

当输入命令:mysql> insert into book(bookname,publisher,author,price,detail) values(‘PHP‘,‘电子工业出版社‘,‘武胜利‘,‘80.00‘,‘与PHP相关的图书‘);
ERROR 1366 (HY000): Incorrect string value: ‘\xB5\xE7\xD7\xD3\xB9\xA4...‘ for co
lumn ‘publisher‘ at row 1

会看到是报错了,是字符集问题;我现在设置下字符集:set names gbk;

mysql> insert into book(bookname,publisher,author,price,detail) values(‘PHP‘,‘电
子工业出版社‘,‘武胜利‘,‘80.00‘,‘与PHP相关的图书‘);

现在再插入数据,成功了。查了下资料。myslq客户端(黑窗口)的字符集默认是gbk的。所以插入成功。

然后再select * from book;  显示的也是正常的中文。没有问题。

 

当我创建一个dmt.php(  在这个脚本文件头部通过header("Content-type:text/html;charset=utf8") 字符集设置也为utf8  )脚本文件,通过这个脚本文件链接数据库,再向数据插入数据的时候。数据插入成功后。再回到黑窗口里面select * from book;的时候发现中文数据全是乱码了。 set names gbk;  之后在select 也还是乱码。该怎么解决呢?

答案是。在dmt.php脚本文件里面,加入如下两条语句

$character = "set names utf8";     

mysql_query($character);

问题就出现在客户端。虽然我们使用header();指定了客户端的字符集为utf8.但是那只是让dmt.php这个脚本文件显示在浏览器中的中 文正常。当dmt.php这个脚本文件跟mysql进行连接的时候,并不会以header()指定的字符集跟mysql数据库进行数据传输。所以我们要加 入以上两条语句“明确”指定客户端跟mysql服务器端进行连接的字符集。

这个时候我们回到mysql客户端,set names gbk;    select * from book;   此时mysql客户端里面中文就可以正常显示了。

 

如果我做如下改动

$character = "set names gbk";     

mysql_query($character);

再通过dmt.php脚本文件执行myslq命令向数据库里插入中文。则在myslq黑窗口中select * from book;时显示的依然是乱码

总结:不管何时,都要让客户端跟myslq服务器端指定一样的字符集,才能保证数据显示不出现问题。

 

关于MySQL字符集问题【已解决】

标签:des   style   blog   http   io   os   ar   使用   for   

原文地址:http://www.cnblogs.com/ynhs/p/4058178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!