加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

MYSQL中数据库服务器、连接、数据库、表、字段的字符编码

发布时间:2022-12-03 08:31:39 所属栏目:MsSql教程 来源:互联网
导读:
对于数据库来讲,有一个很重要却容易忽略的重要概念:字符集和字符编码。
1.字符集:是多个字符(英文、汉字、其他国家语言字符)的集合
常见的字符集有ASCII字符集、LATIN1字符集、GBK字

麦库记事数据丢失了_mssql数据库_mssql数据库表下载

对于数据库来讲,有一个很重要却容易忽略的重要概念:字符集和字符编码。

1.字符集:是多个字符(英文、汉字、其他国家语言字符)的集合

常见的字符集有ASCII字符集、LATIN1字符集、GBK字符集、UTF8字符集。

ASCII字符编码:一个英文字母(不分大小写)占用一个字节的空间,一个中文汉字占用两个字节的空间。

LATIN1字符编码:是ASCII字符编码的扩展。

GBK字符编码,是对GB2312编码的扩展,使用两个字节表示一个字符。

UTF8字符编码:一个英文字符占用一个字节的存储空间,一个中文(含繁体)占用三个字节的存储空间。

在MYSQL中通过如下方式mssql数据库,查看字符集相关信息

(1)查看连接客户端、连接、数据库服务器、数据库等字符集

SHOW VARIABLES LIKE '%char%';

麦库记事数据丢失了_mssql数据库表下载_mssql数据库

需要注意的是以下几个参数:

character_set_client:表示客户端使用的字符集。

character_set_connection:表示连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。

character_set_server:表示服务器使用的字符集。

character_set_database:表示创建数据库使用的字符集。

character_set_results:表示数据库给客户端返回时使用的编码格式。

MYSQL从发送请求到获得结果的经过几次字符集的转换过程,如下图:

mssql数据库表下载_麦库记事数据丢失了_mssql数据库

mssql数据库_mssql数据库表下载_麦库记事数据丢失了

从上面可以看到character_set_database和character_set_server的编码不一样,一个为utf8,另一个为utf8mb4。这两个有什么不同呢?

在MYSQL5.5.3之前,utf8编码最大仅支持3个字节表示一个字符。在MYSQL5.5.3之后,增加了utf8mb4,最大可用使用4个字节表示一个字符。其可以用于支持Emoji 表情(Emoji是一种特殊的 Unicode 编码)和一些不常见的汉字、新增的unicode字符等。

所以在mysql中最好使用utf8mb4字符集。

(2)查看某个数据库、某个表、某个字段的字符编码

1)查看某个数据库的字符编码:
show create database dbname; 或者
select * from information_schema.schemata where schema_name = dbname;
2)查看某个表的字符编码:
show create table tablename;
3)查看某个字段的字符编码:
show full columns from tablename;

(3)修改客户端、连接、结果字符编码,修改数据库、某个表、某个字段的字符编码

1)修改客户端、连接、结果字符编码:
set names 'utf8';
相当于同时:
set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;

2)修改数据库的字符编码:
 alter database database_name character set xxx;
修改库的字符集,影响后续创建的表的默认定义;对于已创建的表的字符集不受影响。
3)修改数据表的字符编码:
alter table table_name character set xxx;
修改表的字符集,影响后续该表新增列的默认定义,已有列的字符集不受影响。
alter table table_name convert to character set xxx;
同时修改表字符集和已有列字符集,并将已有数据进行字符集编码转换。
4)修改数据表的字段的字符编码:
 alter table table_name modify col_name varchar(col_length) character set xxx;

临时修改编码:

 SET GLOBAL character_set_server=utf8; 临时修改服务器编码,重启mysql服务后失效
SET GLOBAL character_set_database=utf8; 临时修改数据库编码,重启mysql服务后失效

利用KETTLE向MYSQL推送数据时出现乱码的解决方案

比如向mysql数据库中推送,出现这样的错误:Incorrect string value: '\xF0\x9F\x91\x80' for column

可以在kettle的目的数据库连接中,设置如下即可。

第一步:在【高级】中,输入:set names utf8mb4;

第二步:在【选项】中,输入:defaultFetchSize 500,useCursorFetch true,characterEncoding utf8,即可。

麦库记事数据丢失了_mssql数据库表下载_mssql数据库

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!