热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL中数据库的默认字符集和校对规则有哪些?

MySQL中数据库的默认字符集和校对规则有哪些?1.ASCII用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。编码范围:U+000

MySQL中数据库的默认字符集和校对规则有哪些?

1. ASCII用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。编码范围:U+0000 - U+007F注意:对于用这类字符的场景够用了,但是却无法表达比如汉字,日文等编码。

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

编码范围:U+0000 - U+10FFFF注意:ASCII 是 UNICODE 的子集,ASCII 编码的字符可以无损转换为 UNICODE 编码的字符。MySQL 常用字符集1. Latin1Latin1 是 cp1252 或者 ISO-8859-1 的别名。ISO-8859-1 编码是单字节编码,向下兼容 ASCII。编码范围:U+0000 - U+00FFISO-8859-1 收录的字符除 ASCII 收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。

单字节内的空间都被 ISO-8859-1 编码占用,所以能够用 ISO-8859-1 编码存储、传输其他任何编码的字节流。比如把一个 Utf8mb4 的编码或者 GBK 的编码存入 Latin1,不会有任何问题。因为 Latin1 保留了原始的字节流,这也就是 MySQL 长期以来把 Latin1 做默认字符集的原因。

但是由于 Latin1 对任何字符都存放字节流,造成了字符个数的浪费。比如:CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;该字段中存储字符个数 UTF8 是 Latin1 的三倍!!!2. GB18030GB18030 是中国官方标准字符集,向前兼容 GBK、GB2312,是这两个的超集。用 1、2、4 个字节分别表示一个符号。

比如对一般中文字符,默认是用两个字节编码存储。Windows 系统,默认用的就是 GB18030。若只是存储中文字符,那 GB18030 最佳。

原因有两点:1)占用空间小,比如比 UTF8 小。2)存储的汉字根据拼音来排序,检索快。3. UTF8UTF8 是 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 基础字符集。

为什么mysql 默认的test数据库character是latin1不是utf8

MYSQL 字符集问题MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table)和连接(connection)。

1.MySQL默认字符集MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。

但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢? (1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。

如何设置Mysql数据库默认的字符集编码为GBK

1、更改服务器的编码方式,在终端输入以下命令: mysqld --character-set-server=gbk --collation-server=gbk_chinese_ci; 2、更改某个数据库的编码方式 mysql -u root -p alter database character set gbk collate gbk_chinese_ci; 3、在创建数据库时指定编码: mysql -u root -p  create database db_name character set gbk collate gbk_chinese_ci; 4、更改某个表的编码方式 mysql -u root -p db_name alter table table_name convert to  charachter set gbk collate gbk_chinese_ci; 5、在创建表时指定编码方式 mysql -u root -p db_name create table table_name (....) character set gbk collate gbk_chinese_ci; 6、更改某行的编码方式 mysql -u root -p db_name alter table table_name modify column_name varchar(20) character set gbk collate gbk_chinese_ci; 7、在创建列时指定编码方式:
mysql -u root -p db_name
create table table_name (..., col1 varchar(20) character set gbk collate gbk_chinese_ci, ...) character set utf8 collate utf8_general_ci;

mysql怎么更改数据库默认字符集

 但是遗憾的是,很多人编译安装MySQL的时候没有指定这两个参数,大多数人更是通过二进制程序的方式安装,那么这时候MySQL的默认字符集是latin1。而这时候我们仍然可以指定MySQL的默认字符集,通过my.cnf文件增加两个参数:1.在[mysqld]下添加default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)2.在[client]下添加default-character-set=utf8这样我们建数据库建表的时候就不用特别指定utf8的字符集了。

配置文件里的这种写法解决了数据存储和比较的问题,但是对客户端的连接是没有作用的,客户端这时候一般需要指定utf8方式连接才能避免乱码。

也就是传说总的set names命令。


推荐阅读
author-avatar
在这里啊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有