以下的文章主要是向大家描述的是MySQL编码机制, 我们大家都知道从 MySQL4.1 版本开始,其支持很多种编码,包括 latin1、gbk、utf8、big5 等等,当然还有一些我们闻所未闻的,以下就是具体内容的描述。
创新互联主要从事网站制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务单县,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
在使用 PHP 连接 MySQL 查询出来的数据有的时候居然会是乱码,关于乱码的解决首先我们要了解MySQL编码机制。
拿 Discuz! 论坛为例,Discuz! 论坛在连接 MySQL 后会立即执行一个设定(见include/db_mysql.class.php ):
复制内容到剪贴板Code:
@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link); 此三处的字符设定很大程度上会解决乱码问题,那么这三个设定具体有什么作用呢?如果我们了解了MySQL编码机制,就可以避免在安装插件及平时的操作过程中产生乱码,还可以自行对论坛的数据进行转码。
character_set_client 我们可以理解为 SQL 语句的编码,如果设置为 binary,MySQL 就当二进制来处理,character_set_connection 设定的值则告诉 MySQL 用来运行 SQL 语句的时候使用的编码,也就是说,程序发送给 MySQL 的 SQL 语句,会首先被 MySQL 从 character_set_client 指定的编码转换到 character_set_connection 指定的编码,如果 character_set_clien 指定的是 binary ,则 MySQL 就会把 SQL 语句按照 character_set_connection 指定的编码解释执行。
当执行 SQL 语句的过程中,比如向数据库中插入取出数据的时候,字段也有编码设置,如果字段的编码设置和 character_set_connection 指定的不同,则 MySQL 会把插入的数据转换成字段设定的编码。
当 SQL 执行完毕向客户端返回数据的时候,会把数据从字段指定的编码转换为 character_set_results 指定的编码,如果 character_set_results=NULL 则不做任何转换动作,(注意这里设置为 NULL 不等于没有设置,没有设置的时候 MySQL 会继承全局设置)。
了解了MySQL编码机制,我们就可以利用这个机制进行数据的转码以及避免在程序使用过程中出现乱码了。
补充:
mysql_query("character_set_client=gbk"); 这句告诉 MySQL 我接下来要用的 SQL 语句的编码是 GBK 的
mysql_query("character_set_connection=gbk"); 这句 告诉 MySQL 要把 SQL 语句转换成 GBK 进行处理
mysql_query("character_set_results=gbk"); 这句告诉 MYSQL 查询返回的结果要统一都转换成 GBK 编码的
当前名称:MySQL编码机制与乱码
文章链接:http://www.csdahua.cn/qtweb/news2/260152.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网