mysql建表的时候设置表里面的字段的字符集是utf-8要怎么设置?默认建好后我去mysql里看字符集都是gbk

mysql建表的时候设置表里面的字段的字符集是utf-8要怎么设置?默认建好后我去mysql里看字符集都是gbk,第1张

1、建表时指定字符utf-8:

CREATETABLE 表名

( `id`TINYINT(255)UNSIGNEDNOTNULLAUTO_INCREMENTPRIMARYKEY,

`content`VARCHAR(255)NOTNULL)

DEFAULTCHARACTERSET=utf8

2、修改表的字符集为utf-8:

altertable表名converttocharactersetutf8

扩展资料:

1、创建数据库时设置字符集:

CREATEDATABASE 数据库名CHARACTERSETutf8COLLATEutf8_general_ci

注意后面三个单词之间是有下划线的对于每个选项所给定的值,前面没有等号;在第一个选项和第二个选项之间也没有逗号。

2、修改数据库的字符集:

alterdatabase 数据库名charactersetutf8

3、显示某数据库字符集设置:

showcreatedatabase数据库名

4、显示某数据表字符集设置:

showcreatetable表名

5、修改字段:

altertable表名modifycolumn'字段名'varchar(30)charactersetutf8notnull

6、添加表字段:

altertable表名addcolumn'字段名'varchar(20)charactersetutf8

1. ASCII

用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。

编码范围:U+0000 - U+007F

注意:对于用这类字符的场景够用了,但是却无法表达比如汉字,日文等编码。

2. UNICODE

用途:用来映射包含 ASCII 以内的其他的所有字符。

编码范围:U+0000 - U+10FFFF

注意:ASCII 是 UNICODE 的子集,ASCII 编码的字符可以无损转换为 UNICODE 编码的字符。

MySQL 常用字符集

1. Latin1

Latin1 是 cp1252 或者 ISO-8859-1 的别名。ISO-8859-1 编码是单字节编码,向下兼容 ASCII。

编码范围:U+0000 - U+00FF

ISO-8859-1 收录的字符除 ASCII 收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。

单字节内的空间都被 ISO-8859-1 编码占用,所以能够用 ISO-8859-1 编码存储、传输其他任何编码的字节流。

比如把一个 Utf8mb4 的编码或者 GBK 的编码存入 Latin1,不会有任何问题。因为 Latin1 保留了原始的字节流,这也就是 MySQL 长期以来把 Latin1 做默认字符集的原因。

但是由于 Latin1 对任何字符都存放字节流,造成了字符个数的浪费。

比如:

CHAR(10) CHARACTER SET LATIN1CHAR(10) CHARACTER SET UTF8

该字段中存储字符个数 UTF8 是 Latin1 的三倍!!!

2. GB18030

GB18030 是中国官方标准字符集,向前兼容 GBK、GB2312,是这两个的超集。用 1、2、4 个字节分别表示一个符号。比如对一般中文字符,默认是用两个字节编码存储。Windows 系统,默认用的就是 GB18030。

若只是存储中文字符,那 GB18030 最佳。

原因有两点:

1)占用空间小,比如比 UTF8 小。

2)存储的汉字根据拼音来排序,检索快。

3. UTF8

UTF8 是 Unicode 的编码实现,可以存储 UNICODE 编码对应的任何字符, 这也是使用最多的一种编码。最大的特点就是变长的编码方式,用 1 到 4 个字节表示一个符号,可以根据不同的符号编码字节长度。

字母或数字用 1 字节,汉字用 3 字节,emoji 表情符号用 4 字节。UTF8 字符集目前是使用最广泛的。

注意!MySQL 里常说的 UTF8 是 UTF8MB3 的别名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 字节 UTF8 字符集!

UTF8MB3 表示最大支持 3 个字节存储字符,UTF8MB4 表示最大 4 个字节存储字符。根据实际需要和未来展望,MySQL 8.0 已经默认用 UTF8MB4 基础字符集。

理论上说起来,设置为 utf8 也并非一个完全合适、100% 没毛病的值,即便你将 MySQL 的字符集设置为 utf8 ,也有可能出现乱码!

通过以下命令,你可以查看 MySQL 所支持的所有『字符集』编码:

在显示的 Charset ,你会看见熟悉的 utf8

如果你再仔细看一下这一行,你会发现这一行的 Maxlen 列中的值居然是 3 !?

这是 MySQL 中的 utf8 并非我们现在常说的 『真·UTF8』 。它『 最多 』只用 3 个字节存储一个字符,而有些中日韩生僻字<small>(包括 emoji 表情)</small>的 Unicode 编码是需要 4 个字节宽度才能存储的,这就会导致一些乱码的隐患。

MySQL 解决这个问题的方案是绕过 utf8 提出一种新的字符集来实现 『 真·UTF8 』 功能: utf8mb4

实际上,为了统一称呼,MySQL 在提出 utf8mb4 字符集之后,就将 utf8 改为 utf8mb3 的别名,因此,你设置字符集为 utf8 本质上就是设置成了 utf8mb3

在更高版本(8.x)的 mysql 中,MySQL 直接将 utf8 改为了 utfmb4 的别名。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7256936.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存