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 ...
随机推荐
- 扒一扒.net、.net framework、mono和Unity
zhaichao 标签: .net.net frameworkc#monounity 2017-04-23 14:39 425人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许 ...
- 解决 Nginx 400 Bad Request 问题(WebSocket)
400 Bad Request 是一种 HTTP 错误状态码.HTTP/1.1 对 400 Bad Request的定义主要是: 语义有误,当前请求无法被服务器理解 请求参数有误 丢包导致异常 Goo ...
- Redux 实现过程的推演
这是一篇浅入浅出的 Redux 实现过程的推演笔记!正常来说应该是要从源码下手开始解析,这里是逆向推演,假如有需求是要这么一个东西,那么该如何从零开始实现? 通过该笔记,更多的是希望自己能够多熟悉从无 ...
- TCP中往返时间的估计与超时
往返时间的估计与超时 TCP采用超时/重传机制来处理报文段的丢失问题.尽管这在概念上面很简单,但是在实际中还是会产生很多微妙的问题.最明显还是超时时间间隔的设置.很显然,这个时间间隔肯定会大于RT ...
- 解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2
前言 本篇讲述Main方法,控制台,注释,预处理指令,编程规范等.这些概念比较琐碎,为避免长篇大论,主要以列举要点的方式来说明. 01 Main方法 Main方法并不是所有应用类型的入口方法,它只是控 ...
- 数据库部分(MySql)_4
约束 约束:给表的字段名添加限制条件; 非空约束(not null):添加非空约束后,字段值不能为null: 唯一约束(unique):添加唯一约束后,字段值不能重复: 主键约束(primary ke ...
- mybatis_03_ mapper代理方式实现MyBatis的Dao编写
不是用mapper代理方式也能够实现,但是不推荐 Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可.Mybatis会自动的为mapper接口生成动态代理实现类. 不 ...
- 【Java每日一题】20170208
20170207问题解析请点击今日问题下方的“[Java每日一题]20170208”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...
- Java高并发--线程安全策略
Java高并发--线程安全策略 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 不可变对象 发布不可变对象可保证线程安全. 实现不可变对象有哪些要注意的地方?比如JDK ...
- 【Linux命令】top命令
一.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析. 二.使用 1.查看进程内线程情况 top -Hp 2556(2556为进程号)找 ...