RDS For MySQL 字符集相关说明
https://help.aliyun.com/knowledge_detail/41706.html?spm=5176.7841698.2.9.F5YjI5
- 字符序命名规则
- 字符集相关 MySQL 命令
- 控制台修改字符集参数 ( character_set_server ) 的方法
- 使用 sql 语句修改数据库字符集的方法
- 如何保证数据库字符集编码正确设置
1. 字符序命名规则
以字符序对应的字符集名称开头,以 _ci(大小写不敏感)、_cs(大小写敏感)、_bin(按编码值比较,大小写敏感)结尾。
例如:当会话的 collation_connction 设置为字符序 utf8_general_ci 时,字符 a 和字符 A 是等价的;
而当其设置为 utf8_bin 时,字符 a 和字符 A 是不等价的。
请参考以下示例:

2. 字符集相关 MySQL 命令
show global variables like '%char%'; #查看RDS实例字符集相关参数设置
show global variables like 'coll%'; #查看当前会话字符序相关参数设置
show character set; #查看实例支持的字符集
show collation; #查看实例支持的字符序
show create table table_name \G #查看表字符集设置
show create database database_name \G #查看数据库字符集设置
show create procedure procedure_name \G #查看存储过程字符集设置
show procedure status \G #查看存储过程字符集设置
alter database db_name default charset utf8; #修改数据库的字符集
create database db_name character set utf8; #创建数据库时指定字符集
alter table tab_name default charset utf8 collate utf8_general_ci; #修改表字符集和字符序
示例如图:

3. 控制台修改字符集参数(character_set_server)的方法:
在 RDS 实例控制台
参数设置 , 点击"笔" 样图标, 如图: 
"确定"
"提交参数" 即可, 如图:

注: 该参数修改后, 仅对开启高权限账号的实例后来创建的数据库有效. 对当前数据库无效.
4. 使用 sql 语句修改数据库字符集的方法:
语法如下:
修改库:
ALTER DATABASE 库名 CHARACTER SET 字符集名称 COLLATE 排序规则名称;
修改表:
ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符集名称 COLLATE 排序规则名称;
修改一列:
ALTER TABLE 表名 MODIFY 列名 字段类型 CHARACTER SET 字符集名称 COLLATE 排序规则名称;
示例: 下面三条sql 分别将库 dbsdq , 表 tt2 , 表 tt2 中的 c2 列修改为utf8mb4 字符集, 代码如下:
alter database dbsdq character set utf8mb4 collate utf8mb4_unicode_ci;
use dbsdq;
alter table tt2 character set utf8mb4 collate utf8mb4_unicode_ci;
alter table tt2 modify c2 varchar(10) character set utf8mb4;
如图:

注意:
- 修改列时,当前列中的所有行都会立即转化为新的字符集;
- alter table 会对表加元数据锁(metadata lock), 详见:
https://help.aliyun.com/knowledge_detail/6697124.html
5. 如何保证数据库字符集编码正确设置:
在数据库中字符集是在数据库设计的过程中需要详细考虑的一点,用户需要根据您的业务场景、用户数据等方面来考虑。
- 查看数据库中设置字符集的参数
代码:
show variables like '%character%';结果如图:

在下面的各参数必须需要保证除了character_set_filesystem外的所有的参数都保持统一才可以保证字符编码不会出现乱码的情况。
character_set_client、character_set_connection 以及 character_set_results 这几个参数都是客户端的设置
character_set_system、character_set_server 以及 character_set_database 是指服务器端的设置。
而对于这三个服务器端的参数来说的优先级是:
列级字符集 > 表级字符集 > character_set_database > character_set_server > character_set_system
列级的字符编码在服务器端是具有最高优先级的。
- 如何能够保证我们的这些字段是一致的?
客户端字符集: 可通过如下方式来定义对应的character_set_client、character_set_connection以及character_set_results这几个参数。例如:
set names utf8;
服务器端字符集: 因设置有不同的等级,首先对于 character_set_system 暂时不提供更改,但是由于其优先级最低因此影响不大。
character_set_server的修改见上面 第 3 项 . 此处不再重复说明.
而对于character_set_database则是则是在数据库创建的时候指定的,如图:

做到上述的设置之后基本上可以保证字符编码不会出现乱码,对于在代码中设置客户端的字符编码的时候建议也可以通过 set names XXX; 来修改客户端的设置,然后再进行相关的操作。
如果问题还未能解决,请联系售后技术支持。
RDS For MySQL 字符集相关说明的更多相关文章
- MySQL 字符集相关
为了支持各个国家的不同语言,MySQL 从4.0 版本开始支持了很多种字符集,且每种字符集支持了 N 多种排序规则.我们可以在建表的时候指定字符集的排序规则,不指定时会有一个默认规则. 字符集和排序规 ...
- 从一个慢查询到MySQL字符集编码
从一个慢查询到MySQL字符集编码 目录 从一个慢查询到MySQL字符集编码 1. 问题起源 2. MySQL字符集和字符集排序规则 2.1 字符集相关概念 2.2 MySQL中的字符集和字符集排序规 ...
- RDS MySQL 全文检索相关问题的处理
RDS MySQL 全文检索相关问题 1. RDS MySQL 对全文检索的支持 2. RDS MySQL 全文检索相关参数 3. RDS MySQL 全文检索中文支持 3.1 MyISAM 引擎表 ...
- MySQL字符集编码相关
Windows 10家庭中文版,MySQL 5.7.20,2018-05-07 Part.1 查找数据库的字符集编码 查看MySQL字符集编码:status命令 使用命令行登录MySQL服务器,然后 ...
- RDS for MySQL 如何使用 Percona Toolkit
Percona Toolkit 包含多种用于 MySQL 数据库管理的工具. 下面介绍常用的 pt-online-schema-change 和 pt-archiver 搭配 RDS MySQL ...
- Mysql字符集设置
转 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等:• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encodi ...
- MySQL字符集
字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...
- Mysql字符集知识总结
字符集&字符编码方式 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,这里的字符可以是英文字符,汉字字符,或者其他国家语言字符. 常见字符集 ...
- MySQL字符集转换引发插入乱码问题
根据http://www.cnblogs.com/cchust/p/4601536.html进行验证测试 问题背景 在mysql上面执行一条普通的insert语句,结果报错: Incorrect st ...
随机推荐
- WCF 通讯标准绑定
WCF 通讯标准绑定 一.预定义标准绑定 标准绑定 说明 BasicHttpBinding BasicHttpBinding 绑定用于最广泛的互交操作,针对第一代Web服务,所使用的传输协议是HTTP ...
- 363 Max Sum of Rectangle No Larger Than K 最大矩阵和不超过K
Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix s ...
- Elasticsearch之sense插件的安装(图文详解)
sense插件可以方便的执行rest请求,但是中文输入的体验不是很好. 安装sense只需要在Kibana端安装插件即可,插件会自动安装到kibana的应用菜单中. [hadoop@master ki ...
- MVC系列学习(十二)-服务端的验证
在前一讲,提到过,客户端的东西永远可以造假,所以我们还要在服务端进行验证 注意:先加载表单,后添加js文件,才能有效:而先加载js,后添加表单,是没有效果的 1.视图与Model中的代码如下 2.一张 ...
- iOS动画——UIKit动画
iOS动画 iOS有很多动画技术,API主要分布在两个库中,一个是UIKit,另一个是CoreAnimation,先对UIKit动画做一下总结. UIKit动画 在UIKit中,很多API都可以看到a ...
- 使用WindowBuilder设计Swing程序
Swing程序表示Java的客户端窗体程序,除了通过手动编写代码的方式设计Swing程序之外,Eclipse中还提供了一种WindowBuilder工具,该工具是一种非常好用的Swing可视化开发工具 ...
- servlet-请求重定向
package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.ser ...
- [Windows Server 2012] IIS自带FTP配置方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:IIS自带FT ...
- 一款批量linux管理工具batchshell
BatchShell是什么? BatchShell是一款基于SSH2的批量文件传输及命令执行工具,它可以同时传输文件到多台远程服务器以及同时对多台远程服务器执行命令.BatchShell基于原生的sh ...
- C# 调用指定打印机 (并不是默认)
this.printDocument1.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; this.pr ...