首页 > 数据库 >mysql字符集及编码转换

mysql字符集及编码转换

时间:2023-01-29 17:31:25浏览次数:55  
标签:编码 set utf8mb4 character show 字符集 mysql

一、mysql字符集

查看数据库支持的字符集和校对规则

show character set;

charset   列标识支持的字符集

collation 列表示支持的校对规则

查询数据库的字符集和校对规则

show variables like '%character%';

show variables like '%collation%';

服务端设置默认字符集和校对规则:(校对规则与字符集默认匹配,每个字符集都有默认的校对规则)

1、编译数据库的时候指定字符集

2、mysql启动服务时通过设置字符参数 mysqld_safe --character_set_server=utf8mb4 &

3、在my.cnf 中指定数据库字符参数   character_set_server=utf8mb4  

4、在mysql运行服务期间修改  set global character_set_server=utf8mb4;


二、连接时字符集及转换

mysql>show variables like 'chara%';

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

| Variable_name            | Value                            |

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

| character_set_client     | utf8mb4                          |

| character_set_connection | utf8mb4                          |

| character_set_database   | utf8mb4                          |

| character_set_filesystem | binary                           |

| character_set_results    | utf8mb4                          |

| character_set_server     | utf8mb4                          |

| character_set_system     | utf8                             |

| character_sets_dir       | /usr/local/mysql/share/charsets/ |

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

mysql字符集及编码转换_数据库

连接客户端字符集:character_set_client  

客户端发出sql语句,由character_set_client  变量指定

服务端接收到语句后,会转换成character_set_connection 变量设置的字符集

服务端执行完语句后,会按照character_set_results 变量设置的字符集返回结果

character_set_client   --------> character_set_connection ----------> character_set_results

mysql Server收到请求时将请求数据从 character_set_client 转换为 character_set_connection

进行内部操作前将请求数据从 character_set_connection 转换为内部操作字符集,步骤如下  

 A. 使用每个数据字段的 CHARACTER SET 设定值;  

 B. 若上述值不存在,则使用对应数据表的字符集设定值  

 C. 若上述值不存在,则使用对应数据库的字符集设定值;  

 D. 若上述值不存在,则使用 character_set_server 设定值。

最后将操作结果从内部操作字符集转换为 character_set_results


三、保存时字符集及转换

保存数据通过4种不同的粒度,指定存储的字符集

server     全局

database 数据库级

table       表级

column    列级

优先级:列>表>数据库>全局

继承关系:列继承表,表继承数据库,数据库继承全局

create database dd  charset gbk;

create table t1(id int) charset utf8;

create table t2(id int ,name varchar(20) charset utf8mb4);

show create database dd;

show create table t1/t2;

客户端、服务器端

只有连接和存储两个层面字符保存一致,才显示正常

字符集和超集直接的关系

超集包括子集,但如果连接和插入的字符集不一致,插入的时候就乱码,后续使用存储一致的字符集查询也是乱码 。尽量保持一致。

标签:编码,set,utf8mb4,character,show,字符集,mysql
From: https://blog.51cto.com/u_15575266/6025892

相关文章

  • 【MySQL】为什么使用B+树做索引
    【MySQL】为什么使用B+树做索引?索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完......
  • MySQL 备份工具 XtraBackup 系列4 --- 定时任务
    一、承上启下1.XtraBackup安装https://www.cnblogs.com/eagle6688/p/17066856.html2. XtraBackup备份https://www.cnblogs.com/eagle6688/p/17072925.html3. XtraB......
  • MySQL 备份工具 XtraBackup 系列2 --- 备份
    一、承上启下1.MySQL安装https://www.cnblogs.com/eagle6688/p/8975090.html2. XtraBackup安装https://www.cnblogs.com/eagle6688/p/17066856.html二、全量备份1.......
  • mysql 管理员常用命令
    1、创建用户createuseradmin@localhostidentifiedby'password';2、赋权grantprivilegesONdatabase.tableTO'username'[@'host'][withgrantoption]gr......
  • golang使用sqlx操作MySQL
     packagemain//sqlx示例import("errors""fmt"_"github.com/go-sql-driver/mysql""github.com/jmoiron/sqlx")varDB*sqlx.DBtypeUs......
  • golang连接操作mysql
    golang操作mysqlpackagemainimport("database/sql""fmt""time"_"github.com/go-sql-driver/mysql")//定义一个全局db对象vardb*sql.DB......
  • linux-安装mysql
    1.在/use/local下mkdirmysql  2.切换到mysql文件夹下cdmysql  3.下载mysql wgethttps://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-lin......
  • mysql8.0 --mysqldump数据备份
     mysqldump数据,可以把用户名写在配置文件的[mysqldump]中但是这里只能写一个用户名和密码,如果一个数据库里有多个用户和数据库怎么分开备份。1、创建一个备份的用户test......
  • 关于Mysql中str_to_date函数
    Str_To_Date(str,format):提供2个参数,Str是字符串时间,年:月:日时:分:秒的值,format是设置什么日期格式的条件。一般都会自动写代码显示selectStr_To_Date(now(),'%Y-%m-%d......
  • Target 塔吉特的4种商品编码
    Target塔吉特共有4种商品编码:TCIN、DPCI、UPC、SKU,其中DPCI、UPC和TCIN在Target系统中是唯一的ID。在target.com中查看商品时,在任一个商品中下拉进入到商品详情页(Item/Deta......