Mysql中执行SET NAMES utf8这条SQl的作用

1)首先,Mysql服务器的编码和数据库的编码在配置文件my.ini中设置;
用记事本打开配置文件,修改代码:default-character-set=utf8,这里
保证了Mysql服务器以及数据库的编码是utf8;

2)打开Mysql的命令行客户端,执行SQL:
show variables like '%character%',结果有这几个编码集
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

3)现在查看某张表里面带有中文的数据时,没有乱码,也可以插入中文数据
+---------+--------------+----------
| type_id | type_name | parent_id
+---------+--------------+----------
| 1 | 编程语言       | 0
| 2 | 静态编程语言 | 1
| 3 | 动态编程语言 | 1
| 4 | JavaScript   | 2
| 5 | Shell           | 2
| 6 | Perl            | 2
| 7 | C             | 3
| 8 | C++          | 3
| 9 | Java           | 3
| 10 | 呵呵呵      | 3

4)执行SQL:SET NAMES utf8,之后,在查看编码集
character_set_client | utf8
character_set_connection | utf8
character_set_database | utf8
character_set_filesystem | binary
character_set_results | utf8
character_set_server | utf8
character_set_system | utf8

5)这时候再来查看带有中文的数据,就出现乱码了
type_id | type_name | parent_id
---------+--------------------+-----------
1 | 缂栫▼璇?█       | 0 |
2 | 闈欐€佺紪绋嬭?瑷€ | 1 |
3 | 鍔ㄦ€佺紪绋嬭?瑷€ | 1 |
4 | JavaScrip         | 2
5 | Shell               | 2
6 | Perl                 | 2
7 | C                    | 3
8 | C++                | 3
9 | Java                | 3
10 | 鍛靛懙鍛µ       | 3

而且也不能插入中文数据;

6)存数据的过程是:client->connection->server
取数据的过程是:server->connection->result

7)所以这三者
character_set_client
character_set_results
character_set_connection
是与命令行的编码同步的,命令行的编码为GBK

8)如果在程序中出现乱码问题,可以这样处理
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
与程序保证一致的utf8编码

最新文章

  1. rsa密钥文件转化为tortoise认可的pak密钥文件
  2. How To Use FETCH_RECORDS In Oracle Forms
  3. xcode C++一些简单设置
  4. 为php安装memcached扩展连接memcached服务器
  5. window+git+AndroidStudio+github
  6. <转>Python学习推荐
  7. extern用法总结!
  8. 如何禁止KEIL初始化RAM为零& 如何判断是软复位还是上电复位
  9. javabean对象自动赋值给另一个javabean对象
  10. oralce 获取自定义主键编码,有并发问题
  11. java 输入、输出流
  12. 《分布式Java应用之基础与实践》读书笔记四
  13. Centos 6启动流程详解
  14. Python之signal模块
  15. 用js来实现那些数据结构07(链表01-链表的实现)
  16. 5. Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
  17. SQL语句方法语法总结(一)
  18. 转:SQL Server - 使用 Merge 语句实现表数据之间的对比同步
  19. python基础之面向对象的多继承以及MRO算法
  20. MariaDB的线程及连接

热门文章

  1. 洛谷 P3388 【模板】割点(割顶)(Tarjan)
  2. goods商品类
  3. check cve
  4. SpringBoot多数据源解决方案(转载)
  5. 【leetcode 136】136. Single Number
  6. 安卓的几种alert对话框
  7. ansible 的file 模块
  8. Ubuntu伪破解Navicat12方法
  9. 浅谈java虚拟机|系列1|架构简介
  10. 【模板】Lucas定理