前言:

一般来说,出现中文乱码,都是客户端和服务端字符集不匹配导致的原因。(默认未指定字符集创建的数据库表,都是latinl字符集, 强烈建议使用utf8字符集)
  
保证不出现乱码的思想:保证客户端、服务端、数据库、表字符集统一
坑:有的时候,cmd或者linux系统字符集问题,其实数据库是正确的,只是我们执行命令在终端看到的是乱码而已,这时需要设置linux系统字符集
1、查看liunx系统字符集:cat /etc/sysconfig/i18n
2、vim /etc/sysconfig/i18n

  
备注:始终牢记,存放数据的是字段,所以编码最后是以字段的编码为准,数据库和表的编码影响的时候字段的默认值,也就是说在设置了数据库编码之后,新建的表在不指定的情况下就会和数据库编码相同,而不指定字段的编码时,字段的编码和表相同。如果使用 Alter 修改一个表的字符编码,那原来的字段编码并不会发生改变,如果需要修改表编码的同时修改字段的编码,可以使用 convert

一、查看是什么字符集

1、查寻数据库是什么字符集

show create database django\G (django 是数据库名称)

2、查寻表是什么字符集

show create table auth_group\G (auth_group 是表名称)

ENGINE = InnoDB 该表数据库引擎是InnoDB
DEFULT CHARSET=utf8 该表字符集是utf8
COLLATE utf8_general_ci 校准规则

3、查看所有字符集和对应的校准规则

show character set;

二、解决方法:

1、插入数据的时候,先设置客户端插入字符集和数据库建表相同的字符集

eg:如果数据库表字符集是latinl,那么插入数据的时候也要是latinl
方法:set names latinl
insert into student value('飞东')


2、将SQL语句放入文件中,使用source来执行这个文件,插入数据,则不会出现乱码,原理是和1一样的,只是放在文件中执行而已

方法:将下面两个语句放入一个新建文件中,如mysql.sql

set names Latinl
insert into student value('飞东')
执行这个文件:source mysql.sql

3、从其他文件导入数据库(避免导入数据有中文乱码的问题)

将数据编码格式保存为utf-8(UTF8不要导入gbk,gbk不要导入UTF8)

set names utf8;
ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  修改数据库的编码格式
ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;     修改表的编码格式
LOADLOCAL'C:\\utf8.txt'INTOTABLE tb_name;    从文件中导入数据库

4、永久修改默认客户端编码格式(修改my.cnf配置文件,针对MySQL 5.5版本以上)


5、永久修改默认服务端编码格式(修改my.cnf配置文件,针对MySQL 5.5版本以上)



修改完毕之后重启mysqld服务:service mysqld restart

三、常用命令

1、查看默认编码格式 show variables like "%char%";



character_set_client(客户端)、character_set_connection(连接)、character_set_results(结果) 三者字符集是一致的

2、修改数据库的编码格式

ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  

3、修改表的编码格式

ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  

4、通过ALTER 修改库或者表的字符集,只是对之后插入的数据有效,原来已经存在的数据无法修改,如果需要修改原来带有数据的字符集,只能通过把原来的数据导出来,再插入到新的已经修改过字符集的表(数据库)中。

四、建议

1、中英文环境,linux设置系统字符集为utf8,数据库服务端,客户端,数据库,表都是utf8字符集

2、无论是查寻还是插入,都先用set names utf8 先设置一下字符集

3、建议建数据库语句:

4、建议表语句:


  4、建议表语句:
  

转载于:https://blog.51cto.com/13126942/2044847

MySQL--字符编码和字符集相关推荐

  1. 修改mysql字符编码出现Job failed to start解决办法

    修改mysql字符编码出现Job failed to start解决办法 在python mange.py shell下填充MySQL数据库的时候,发现汉字不能输入. 于是要修改一下MySQL数据库编 ...

  2. 修改数据库mysql字符编码为UTF8

    修改数据库mysql字符编码为UTF8 Mysql数据库是一个开源的数据库,应用非常广泛.以下是修改mysql数据库的字符编码的操作过程.步骤1:查看当前的字符编码方法 mysql> show ...

  3. php 删除mysql 返回_php 返回mysql字符编码与删除字符编码

    php 返回mysql字符编码与删除字符编码 function Ebak_GetSetChar($char){ global $empire; if(empty($char)) { return '' ...

  4. mysql字符为utf8_设置mysql字符编码为utf8

    在windows下开发的JavaWeb项目,运行测试没有任何问题,后来部署到阿里云租来的linux服务器上遇到了中文乱码的问题,排查后发现是mysql字符编码设置的问题. 进入mysql,用" ...

  5. mysql 字符编码查询

    mysql 字符编码查询 1.查询所有表的编码 SELECT TABLE_NAME,TABLE_COLLATION FROM information_schema.TABLES 2.查询数据库的编码 ...

  6. mysql语句编码_使用SQL语句操作MYSQL字符编码

    -- 查看所有的字符编码 SHOW CHARACTER SET; -- 查看创建数据库的指令并查看数据库使用的编码 show create database dbtest; -- 查看数据库编码: s ...

  7. 深入MySQL字符编码与对照规则

    前言   本篇和大家一起深入MySQL的字符集与对照规则,剖析下我们存储在MySQL中的字段是如何进行存储和校验比对的. 先看问题:unique key为什么失效了? 拉齐共识:回顾下字符编码的基础知 ...

  8. MySQL字符编码的讨论:如何处理emoji等4字节的Unicode字符 - utf8mb4 vs. utf8 Collations

    1. Unicode是什么 Unicode(中文:万国码.国际码.统一码.单一码)是计算机科学领域里的一项业界标准.它对世界上大部分的文字系统进行了整理.编码,使得电脑可以用更为简单的方式来呈现和处理 ...

  9. mysql字符集和表字符集_Mysql数据库表引擎与字符集

    Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理 ...

  10. mysql字符集和表字符集_设置数据库的字符集和设置表字段字符集的区别是什么?...

    对于oracle来说,只有数据库字符集这个说法,不存在什么表字符集和字段字符集.你说的这个是mysql的字符集,数据库字符集可以和表字符集不同,也可以和列字符集不同,也就是说,你的数据库字符集为utf ...

最新文章

  1. OpenCV Resize Reshape
  2. MATLAB2014b下运行cuda6.5安装方法及例程
  3. Java中Volatile的理解
  4. 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...
  5. ssis导出数据性能_使用SSIS Hadoop组件导入和导出数据
  6. 如何导入超大mysql数据库备份文件_导入超大MySQL数据库备份文件.sql工具-BigDump使用方法...
  7. h5 如何录音保存上传_H5录音及保存到后台recorder.js实现
  8. 车牌识别:HyperLPR车牌识别代码解析
  9. 简单快速的UG编程入门操作
  10. 解读 PackageManager.resolveActivity
  11. 基尼指数 Gini Index
  12. 肺疫面前,段子手出动,但是玩笑也要分场合
  13. C语言--小学生计算机辅助教学系统
  14. 上海/北京内推 | 小米相机部视频算法组招聘视觉图像算法工程师
  15. java编程找出吸血鬼数字,Java 找到四位数的所有吸血鬼数字 基础代码实例
  16. MATLAB 设置msgbox若干秒后自动关闭
  17. 社会热点----清华pk北大
  18. CSS :hover选择器
  19. MMRotate 全面升级,新增 BoxType 设计
  20. Matlab一句话画三维应力云图

热门文章

  1. 【引用】别让理想毁了人生
  2. 要抢足球教练饭碗!切尔西未来或将用上AI教练
  3. 日本的危机感:想战胜中美,要举全国之力培养AI人才
  4. 自学几小时,斯坦福AI推测并复现了元素周期表 | 华裔团队研究
  5. 震惊!腾讯要建AI鹅厂,百度让狗刷脸购物,锤子R-1真机披露
  6. 蓦然认知戴帅湘:做新一代决策引擎,比DuerOs走得垂直纵深
  7. centos7搭建superset数据平台
  8. 客户端父进程提前死亡
  9. 《汇编语言》总结04 —— 更灵活的定位内存地址的方法
  10. 关于Linux学习的热身知识六