mysql字符集设置

摘要:
MySQL数据库字符集包括两个概念:字符集和排序规则。字符集用于定义MySQL数据库的存储模式,字符集和校对规则是一对多的。查看MySQL可用字符集的命令是showcharacterset;

1.1mysql字符集知识:

概述:字符集就是一套文字符号及其编码,比较规则的集合。 Mysql数据库字符集包括字符集(character)和校对规则(collation)这两个概念。其中字符集用于定义mysql数据库的存储方式,而校对规则是定义字符串的比较方式,并且字符集和校对规则是一对多的关系

查看mysql可用的字符集的命令是show character set;

 

1.2mysql数据库使用常见字符集介绍:

常用·字符集

长度

说明

GBK

2

不是国际标准,但支持的系统较多

UTF-8

3

中英文合并,建议使用此字符集

utf8mb4

4

UTF-8 Uniconde

Lantin1

1

Mysql默认安装使用的字符集

 

 

 

 

 

 

1.3选择合适的字符集

1)满足应用支持语言的需求,处理各种各样的文字,支持不同语言的国家和地区,应选Unicode字符集,即utf-8。

2)处理数据量较大,且要支持中文,性能要求很高,可选GBK(定长字符集,占用两个字节)对大量运算处理,比较排序,更快,更高。

3)移动互联网业务,建议使用utf8mb4字符集。

 

2.1mysql字符集的设置

1)mysql默认情况下字符集的设置

show variables like 'character_set%';

+--------------------------+-------------------------------------------+

| Variable_name            | Value                                     |

+--------------------------+-------------------------------------------+

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

| character_sets_dir       | /application/mysql-5.6.36/share/charsets/ |

2)linux服务器端

[root@db01 mysql]# cat /etc/sysconfig/i18n

LANG="zh_CN.UTF-8

3)临时修改mysql客户端字符集

mysql> set names utf8;

Query OK, 0 rows affected (0.00 sec)

永久修改:

[client]

default-character-set=utf8

4)修改mysql服务器端字符集

在mysqld下添加default-character-set=utf8

Mysql5.5及其以后版本

[mysqld]

character-set-server=utf8

5)修改库表字符集的方法:

 修改库:alter database databasename character set ******

 修改表:alter table tablename character set ******

库的修改:

例如:show create database oldboyG;

*************************** 1. row ***************************

       Database: oldboy

Create Database: CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET gbk */

1 row in set (0.00 sec)

oldboy数据库字符集目前是gbk,将其修改为utf8,命令如下;

alter database oldboy character set utf8 collate utf8_general_ci ;

表的修改:

alter table student character set utf8 collate utf8_general_ci ;

 

2.2生产环境中字符集的修改

说明:如何生产环境中没有调整好字符集的设定,而运行之后发现满足不了需求而调整,但不想丢失数据的话,可以进行字符集的修改,直接通过alter database databasename character set ******和alter table tablename character set ******命令进行修改,只能对修改后插入的数据有效,在修改之前插入的数据依然会保留之前的字符集,要想实现对之前数据也能修改字符集,必须将其数据导出,再经过调整重新导入即可。

模拟过程:

1) 导出表结构

mysqldump -uroot -p --default-character-set=utf8 -d oldboy>oldboy.sql

说明:--default-character-set=utf8 :以什么字符集连接 -d:只导出表结构,不导出数据

手工修改oldboy.sql表中的字符集为新的字符集。

2) 确保数据库不再更新数据,导出数据。

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=gbk oldboy>data.sql

参数说明:

--quick:功能是从服务器一次一行检索表中的行,而不是检索所有的行,并在输出前将它缓存到内存中,用于转储较大的表。

--extended-insert:使转储文件更小,重新载入文件可以加速插入。

--no-create-info:不会重新创建转储表create table语句。

--default-character-set=gbk:保留原有导出数据的字符集,这样导出的文件不会出现·乱码。

3)打开data.sql,将set names gbk 修改为 set names utf8

4)使用新的字符集创建新的数据库

   show create database oldboy default charset utf8;

5)创建表结构,执行oldboy.sql。

mysql -uroot -p oldboy<oldboy.sql

6)重新导入数据u,执行data.sql。

   mysql -uroot -p oldboy<data.sql

免责声明:文章转载自《mysql字符集设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringCloud使用Feign出现java.lang.ClassNotFoundException: org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory异常android——相对布局,表格布局下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SqlServer 统计1-12月份 每个月的数据(临时表)

想做一个年度图表 效果如下,通过sqlserver来统计今年1-12月份每个月的数据,效果如下 sql语句网上找了很多都没有找到满意的 找到的其中一种写法是这样子的 这种写法对于前端来说很方便 不用进行数据处理, 但缺点在于 1:后端是不是得定12个属性的容器来接收这个数据格式 2:假如我要一个在一个查询结果中显示两个不同对象的年度统计数据就无法实现,...

微信小程序循环中点击一个元素,其他的元素不发生变化,类似点击一个循环中的语音,其他的不发生点击事件

类似语音,因为都在一个数据内,所以点击第一个,所有的语音都变化,解决方法就是 把整个数据都获取下来,然后更改其中一个需要更改的值,然后再把整个数据都setdata回去,如果需要动画的话,wxml里面放两个组件,一个默认,点击时候隐藏,把另一个显示出来。   例如点击第一个语音,想要播放http://voluntarybanktestapi.wxstar.c...

PHP cURL应用实现模拟登录与采集使用方法详解

对于做过数据采集的人来说,cURL一定不会陌生。虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_contents显得有点无能为力。因此,本文将为你介绍采集神器cURL的使用。 工具 火狐浏览器(FireFox) + Firebug “工欲善其事,必先利其器。...

sqlite报SQLITE_LOCKED "Database table is locked"

今天调了一天程序,最后远程的ORACLE都好,做下压力测试.惊奇的发现SQLITE报错.. 说什么数据表锁了..... 结果调到了现在...很是郁闷. 情况如下: 每个线程打开自己的SQLITE连接.线程间不混用. 1 if (sqlite3_open_v2(strdb, \ 2 db, \ 3...

互联网产品怎么做数据埋点

在互联网产品上线之后,产品和运营人员需要即时了解产品的使用情况,有多少用户,用户使用了哪些功能,停留时长,使用路径。。。等。要回答这些问题,需要有数据,不能拍脑袋想当然。数据怎么得到呢?埋点就是采集数据的重要途径。 数据埋点不是新名词,在电脑网站出来之后就有统计工具,站长们很熟悉的谷歌、百度统计等工具,通过在HTML页面中嵌入它们提供的js代码实现数据采集...

PivotGridControl控件应用

一、概述        PivotGridControl是DevExpress组件中的一个重要控件,在数据多维分析方面具有强大的功能,它不仅可以分析数据库中的数据,而且还能够做联机分析处理(OLAP),并且支持多种数据仓库。前面的文章中介绍了如何用PivotGridControl制作交叉表部件,在智能窗体上展示交叉报表。本文将继续对PivotGridCon...