MySQL编码机制与乱码

数据库 MySQL
此文章主要描述的是MySQL编码机制,以及对了解MySQL编码机制的必要性做一解说,以下就是文章的主要内容描述,望你会有所收获。

以下的文章主要是向大家描述的是MySQL编码机制, 我们大家都知道从 MySQL4.1 版本开始,其支持很多种编码,包括 latin1、gbk、utf8、big5 等等,当然还有一些我们闻所未闻的,以下就是具体内容的描述。

 

在使用 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 编码的
 

【编辑推荐】

  1. 对MySQL数据库小技巧概述
  2. MySQL游标的使用笔记大全
  3. 对MySQL 存储过程中乱码的破解
  4. MySQL使用rand 随机查询记录效率测试
  5. MySQL备份之根据表备份概述
责任编辑:佚名 来源: cnblogs
相关推荐

2009-06-10 15:27:08

netbeans 编码乱码

2010-05-20 10:00:58

MySQL 中文乱码

2009-02-25 15:39:15

乱码原理MySQL

2024-03-04 07:50:04

Python字符编码网络通信

2009-07-01 00:23:40

MySQL字符集乱码

2010-05-31 10:45:09

MySQL+tomca

2010-06-12 11:19:59

MySQL中文乱码

2011-05-16 10:31:19

mysql乱码

2009-11-30 11:01:20

MySQL与PHP产生

2010-02-26 13:34:50

WCF编码机制

2022-03-11 09:12:06

MySQLMDL

2010-05-12 15:34:26

MySQL编码设置

2010-09-11 11:38:45

编码器故障保护机制PowerSmart

2022-01-26 19:42:05

MySQL乱码排查

2010-05-25 11:33:27

MySQL乱码

2010-06-07 09:22:21

2021-09-06 18:55:57

MySQLCheckpoint机制

2009-11-30 12:58:04

PHP字符集编码

2010-05-11 14:37:56

MySQL 备份

2010-06-11 17:06:44

MySQL EMS
点赞
收藏

51CTO技术栈公众号