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编码

Mysql中经常出现的乱码问题的更多相关文章

  1. mysql中Incorrect string value乱码问题解决方案

    mysql中Incorrect string value乱码问题解决方案   你是否遇到过类似以下错误? java.sql.SQLException: Incorrect string value: ...

  2. java向mysql中写入中文出现乱码

    乱码的原因有很多,我遇到的原因是url配置的问题,解决方案: 将: jdbc.url=jdbc:mysql://localhost:3306/XXXX?useUnicode=true&char ...

  3. servlet中中文正常显示,mysql数据库手动插入中文正常显示,servlet向mysql中插入中文显示乱码

    作者:http://5563447.blog.51cto.com/5553447/1422627 问题是:就是POST请求提交表单数据给servlet,通过JDBC插入Mysql,出现中文乱码. 解决 ...

  4. mysql insert和前台显示乱码

    近期在搞服务端.遇到问题例如以下, 在mysql中插入中文乱码.或mysql中中文正常显示,但jsp在前台显示mysql中的中文时乱码. 解决方法,进入mysql控制台,运行 SET characte ...

  5. 关于mysql数据库插入数据,不能插入中文和出现中文乱码问题

    首先,推荐一篇博客:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当时,我安装完mysql数据库后,新建一个数据库后插入数据 ...

  6. 更改Mysql数据库中的数据出现乱码问题

    数据库服务器环境:windows 7 专业版 Mysql版本:5.5.36 出现问题:搭完工程之后,在做保存和插入操作时,涉及的数据在数据库中为变为乱码. 解决方案:         MySQL数据库 ...

  7. mysql中相关,无关子查询,表与表之间的关系以及编码和乱码的解决

    ※MySQL中的字符编码(注意,utf8中没有'-',跟Java中不一样)SHOW VARIABLES; //查看系统变量//查询字符编码相关的系统变量SHOW VARIABLES WHERE var ...

  8. Java程序在向mysql中插入数据的时候出现乱码

    今天在往数据库中插入数据的时候中文字符在数据库中就出现了乱码?网上有各种说法,但是适合我的,最终解决我的问题的只有下面一种! 在创建数据库的时候,注意设置编码方式. CREATE DATABASE ` ...

  9. MySql中插入乱码问题解决

    今天在使用Java写入数据库时候,发现Insert语句和Update语句在执行过后,数据库中中文显示的是“??”,经过一番查阅,其中关键的问题在于编码格式是否统一. 其中创建表时候,每个关键字的格式都 ...

随机推荐

  1. AT2292 Division into Two

    题目 不妨认为\(A>B\). 首先判一下无解. 设\(f_i\)表示\(A\)集合最后选第\(i\)个数的方案数. 转移的话枚举一下从哪个\(j\)转移过来. 显然\(j\)需要满足以下条件: ...

  2. selenium获取微博用户粉丝数

    selenum的安装 selenium文档 获取微博用户粉丝数 from selenium import webdriver from time import sleep wd = webdriver ...

  3. SparkML之推荐算法ALS

    参考: SparkML之推荐算法(一)ALS --有个比较详细的讲解,包含blocks使用. Spark ALS源码总结 //TODO 源码,集群尝试.研究blocks使用原理及作用. 官方解释:nu ...

  4. 6-5 如何读写excel文件

    >>> import xlrd,xlwt 一.读excel 1.打开一个excel(读模式) >>> book = xlrd.open_workbook(r&quo ...

  5. poj2186--tarjan+缩点(有向图的强连通分量中点的个数)

    题目大意:       每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也 ...

  6. 剑指offer-数组中的逆序对-数组-python

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  7. vim下使用UltiSnips

    vim下使用UltiSnips 最近在学习Linux编程,相应的也在学vim.vim中的UltiSnips插件可以实现比一般的代码补全更为强大的效果.这里就记录一下吧. UltiSnips安装.基础及 ...

  8. luogu P4548 [CTSC2006]歌唱王国

    传送门 这题\(\mathrm{YMD}\)去年就讲了,然而我今年才做(捂脸) 考虑生成函数,设\(f_i\)表示最终串长为\(i\)的概率,其概率生成函数为\(F(x)=\sum f_ix^i\), ...

  9. wex5 如何导包

    wex5中 导jar包 要先把jar文件放在: E:\WeX5\runtime\BaasServer\WEB-INF\lib目录中(我wex5放的是E盘) 点击项目 --> 属性 --> ...

  10. openlayers 添加标记点击弹窗 定位图标闪烁

    环境vue3.0 ,地图为公用组件,将添加图标标记的方法放在公共地图的初始化方法里 同一时间弹窗和定位标识都只有一个,因而我把弹窗和定位标记的dom预先写好放到了页面 //矢量标注样式设置函数,设置i ...