mysql之全球化和本地化:字符集、校对集、中文编码问题
本文内容:
- 什么是字符集?什么是校对集?
- 查看字符集和校对集
- 设置字符集和校对集
- mysql中的中文数据问题
首发日期:2018-04-19
什么是字符集?什么是校对集?
- 字符集是字母和符号的集合,每一个字符编码都由字符集决定。
- 校对集是字母和符号的校对标准。校对集影响着字符的排序和搜索。
查看字符集和校对集:
- 查看mysql支持的字符集:show character set;

- 查看mysql支持的校对集:show collation;

- 查看服务端默认的字符集:show variables like 'char%';

- 查看服务端默认的字符集:show variables like 'collation%';

服务端默认的字符集的意义:

服务端默认的校对集的意义:

设置字符集和校对集
设置数据库数据表的字符集:
- 实际上,字符集很少是服务器范围(甚至数据库范围)的设置。不同的表,甚至不同的列都可能需要不同的字符集,而且两者都可以在创建表时指定【语出mysql必知必会】。下面介绍不使用默认配置来创建数据库、数据表
- 创建数据库:create database 数据库名 charset 字符集 collate 校对集;【校对集并不是必要的,每一个字符集都有默认的校对集,如果没有校对集将使用默认的】

- 创建数据表:create table 表名 charset 字符集 collate 校对集;

- 给某一列指定字符集和校对集:

设置服务端和客户端的字符集:
- 语法:set character_set_xxx =字符集; 【character_set_xxx是上面查看字符集中的服务端的各个默认字符集,意义在上面已经标上了】【这种设置是会话级的,仅在当次连接生效。】
- 如果想要永久修改服务端的字符集:windows下修改my.ini文件【就是mysql的配置文件,可以从mysql服务中查看
在哪】,在mysqld中将character-set-server的值修改为指定的字符集【修改的是服务端的字符集】
补充:
- 不可永久配置服务端认为客户端的字符集,每一个连接过来的客户端的字符集都是不确定的,应该由客户端设置当次连接的字符集来指定字符集。
mysql中的中文数据问题:
- mysql中的中文数据问题本质上还是字符集问题,想要识别和存储中文数据,必须设置能编码中文的字符集。
- gbk和utf8都是支持mysql的,一般都是将mysql的字符集更改成utf8来识别中文。
- 如何配置(以gbk为例):
- 首先要考虑的一个是:如果你使用命令行模式,默认情况下字符的编码格式是gbk的,也就是说客户端的数据编码是gbk的;
- 如果服务端要识别客户端传来的中文,那么需要设置服务端认为客户端的字符集为gbk;set character_set_client ='gbk';
- 如果服务端要返回中文给客户端,需要将服务端返回给客户端的数据的字符集设置为gbk;set character_set_results ='gbk';
- 对于单次会话,可以直接使用set names = 'gbk';【执行set names= 'gbk'就是把character_set_client、character_set_connection、character_set_results这3个参数值都设为gbk】
mysql之全球化和本地化:字符集、校对集、中文编码问题的更多相关文章
- mysql之字符集与校对集
一.字符集 1.mysql的字符集设置非常灵活 可以设置服务器默认字符集: 数据库默认字符集: 表默认字符集: 列字符集: 如果某一级别没有指定字符集,则继承上一级. 查看所有字符集语句:show c ...
- MySQL开发——【字符集、校对集】
字符集 查看MySQL中的字符集 基本语法: show character set; 查看MySQL中的默认字符集 基本语法: show variables like ‘character_set%’ ...
- mysql概要(九)字符集和校对集
1.mysql 字符集有细致设置: 2.mysql字符处理机制是:数据库和客户端之间存在一个字符集转换器(后文简称转换器)将客户端字符编码(必须告诉服务端的)转换成一种中间编码的数据(可自定义的但保证 ...
- mysql补充(1)校对集utf8_unicode_ci与utf8_general_ci
创建数据库并设置编码utf-8 多语言(补充1 2) create database mydb default character set utf8 collate utf8_general_ci; ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- mysql字符集和校对规则(Mysql校对集)
字符集的概念大家都清楚,校对规则很多人不了解,一般数据库开发中也用不到这个概念,mysql在这方便貌似很先进,大概介绍一下简要说明 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比 ...
- mysql中的字符集和校对规则(mysql校对集)
1.简要说明介绍 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符 ...
- MySQL之字符集-校对规则
一.字符集(Character set) 是多个字符(英文字符,汉字字符,或者其他国家语言字符)的集合,字符集种类较多,每个字符集包含的字符个数不同. 特点: ①字符编码方式是用一个或多个字节表示字符 ...
- mysql字符集校对
常用的两种 utf8_general_ci 按照普通的字母顺序,而且不区分大小写(比如:a B c D)utf8_bin 按照二进制排序(比如:A排在a前面,B D a c) ci是 case ins ...
随机推荐
- spring cloud+.net core搭建微服务架构:服务注册(一)
背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...
- 更改mysql 数据目录
1.停止MySQL服务 service mysqld stop 2.移动数据到新位置 mv /var/lib/mysql /newdir/data/ 3.修改/etc/my.cnf datadir=/ ...
- Android--Service之提高
前言 上一篇博客讲解了一下Android下Service组件的基本使用,对Service组件还不了解的朋友可以先去看看另外一篇Service基础的博客:Android--Service之基础.这篇博客 ...
- 项目中使用sass,如何实现自动编译
本次React项目中用到了Sass,在一个主文件main.scss中引入了其余的scss文件,然后把main.scss文件编译为main.css文件,最后在项目的主文件入口index.html中引入m ...
- Servlet & JSP系列文章总结
前言 谢谢大家的捧场,真心感谢我的阅读者. @all 下一期,重点在 数据结构和算法 ,希望给大家带来开心.已经出了几篇,大家爱读就是我的开心. Servlet & JSP系列总结 博客, ...
- Gradle安装使用以及基本操作
这两天看到越来越多的在接触Gradle,然后发现我之前没有做过记录,而且之后下个月的一些有关SpringBoot的东西也需要用到,所以这里就来记录一下,方便以后使用. 简单介绍 Gradle是一个好用 ...
- for循环输出漏斗的形状【java】
使用for循环语句输出以下“漏斗”效果: +------+ |\..../| | \../ | | \/ | | /\ | | /..\ | |/....\| +------+ 代码:(解决思路详见代 ...
- Netty源码分析(三):客户端启动
Bootstrap Bootstrap主要包含两个部分,一个是服务器地址的解析器组AddressResolverGroup,另一个是用来工作的EventLoopGroup. EventLoopGrou ...
- 【原创】NVIC中断
(1)NVIC 全称为Next Vector Interrupt Controoler,嵌套中断向量控制器,是ARM Cortex M3的内部设备之一,任何一款基于ARM Cortex M3的 ...
- php安装grpc报No releases available for package解决方法
1.pecl.php.net搜索相应grpc的下载文件,这里找了个stable版本 https://pecl.php.net/get/grpc-1.17.0.tg 2.wge下载+pecl insta ...