MySQL--字符编码和字符集
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,前言:一般来说,出现中文乱码,都是客户端和服务端字符集不匹配导致的原因。(默认未指定字符集创建的数据库表,都是latinl字符集, 强烈建议使用utf8字符集)保证不出现乱码的思想:保证客户端、服务端
千家信息网最后更新 2025年01月23日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 该表数据库引擎是InnoDBDEFULT CHARSET=utf8 该表字符集是utf8COLLATE utf8_general_ci 校准规则
3、查看所有字符集和对应的校准规则
show character set;
二、解决方法:
1、插入数据的时候,先设置客户端插入字符集和数据库建表相同的字符集
eg:如果数据库表字符集是latinl,那么插入数据的时候也要是latinl方法:set names latinlinsert into student value('飞东')
2、将SQL语句放入文件中,使用source来执行这个文件,插入数据,则不会出现乱码,原理是和1一样的,只是放在文件中执行而已
方法:将下面两个语句放入一个新建文件中,如mysql.sql
set names Latinlinsert 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、建议表语句:
数据
字符
字符集
编码
数据库
文件
格式
字段
客户
客户端
乱码
建议
语句
服务
时候
系统
相同
只是
方法
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
七牛猫客网络安全宣传周
考勤机表格如何修改数据库
安徽服务器迁移选哪家服务器
广州大蕃鼠网络技术直播
数据库设计的几个主要阶段
网站 linux 服务器
阿里云国外服务器怎么样
我的世界国际版realm服务器
网络安全cap
当前网络安全工作存在的主要问题
服务器 数据同步
2017网络安全法知识
联想服务器管理口使用
删除数据库的操作步骤
网络安全对金融行业打法
软件开发中需要注意的问题
云计算和网络安全哪个工资高
计算机网络技术维护
深圳软件开发公难做吗
拜城县网络安全
网络安全专项风险评估报告
数据库查询表视图
数据库清除数据不删表
网络安全文明校园绘画图片
服务器安全防护需要哪些
最新软件开发模型
武大957网络技术基础
电脑录歌软件开发
敏捷软件开发适用于
维护网络安全工作规范