MySQL--字符编码和字符集
前言:
一般来说,出现中文乱码,都是客户端和服务端字符集不匹配导致的原因。(默认未指定字符集创建的数据库表,都是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--字符编码和字符集相关推荐
- 修改mysql字符编码出现Job failed to start解决办法
修改mysql字符编码出现Job failed to start解决办法 在python mange.py shell下填充MySQL数据库的时候,发现汉字不能输入. 于是要修改一下MySQL数据库编 ...
- 修改数据库mysql字符编码为UTF8
修改数据库mysql字符编码为UTF8 Mysql数据库是一个开源的数据库,应用非常广泛.以下是修改mysql数据库的字符编码的操作过程.步骤1:查看当前的字符编码方法 mysql> show ...
- php 删除mysql 返回_php 返回mysql字符编码与删除字符编码
php 返回mysql字符编码与删除字符编码 function Ebak_GetSetChar($char){ global $empire; if(empty($char)) { return '' ...
- mysql字符为utf8_设置mysql字符编码为utf8
在windows下开发的JavaWeb项目,运行测试没有任何问题,后来部署到阿里云租来的linux服务器上遇到了中文乱码的问题,排查后发现是mysql字符编码设置的问题. 进入mysql,用" ...
- mysql 字符编码查询
mysql 字符编码查询 1.查询所有表的编码 SELECT TABLE_NAME,TABLE_COLLATION FROM information_schema.TABLES 2.查询数据库的编码 ...
- mysql语句编码_使用SQL语句操作MYSQL字符编码
-- 查看所有的字符编码 SHOW CHARACTER SET; -- 查看创建数据库的指令并查看数据库使用的编码 show create database dbtest; -- 查看数据库编码: s ...
- 深入MySQL字符编码与对照规则
前言 本篇和大家一起深入MySQL的字符集与对照规则,剖析下我们存储在MySQL中的字段是如何进行存储和校验比对的. 先看问题:unique key为什么失效了? 拉齐共识:回顾下字符编码的基础知 ...
- MySQL字符编码的讨论:如何处理emoji等4字节的Unicode字符 - utf8mb4 vs. utf8 Collations
1. Unicode是什么 Unicode(中文:万国码.国际码.统一码.单一码)是计算机科学领域里的一项业界标准.它对世界上大部分的文字系统进行了整理.编码,使得电脑可以用更为简单的方式来呈现和处理 ...
- mysql字符集和表字符集_Mysql数据库表引擎与字符集
Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理 ...
- mysql字符集和表字符集_设置数据库的字符集和设置表字段字符集的区别是什么?...
对于oracle来说,只有数据库字符集这个说法,不存在什么表字符集和字段字符集.你说的这个是mysql的字符集,数据库字符集可以和表字符集不同,也可以和列字符集不同,也就是说,你的数据库字符集为utf ...
最新文章
- OpenCV Resize Reshape
- MATLAB2014b下运行cuda6.5安装方法及例程
- Java中Volatile的理解
- 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...
- ssis导出数据性能_使用SSIS Hadoop组件导入和导出数据
- 如何导入超大mysql数据库备份文件_导入超大MySQL数据库备份文件.sql工具-BigDump使用方法...
- h5 如何录音保存上传_H5录音及保存到后台recorder.js实现
- 车牌识别:HyperLPR车牌识别代码解析
- 简单快速的UG编程入门操作
- 解读 PackageManager.resolveActivity
- 基尼指数 Gini Index
- 肺疫面前,段子手出动,但是玩笑也要分场合
- C语言--小学生计算机辅助教学系统
- 上海/北京内推 | 小米相机部视频算法组招聘视觉图像算法工程师
- java编程找出吸血鬼数字,Java 找到四位数的所有吸血鬼数字 基础代码实例
- MATLAB 设置msgbox若干秒后自动关闭
- 社会热点----清华pk北大
- CSS :hover选择器
- MMRotate 全面升级,新增 BoxType 设计
- Matlab一句话画三维应力云图