开发篇之字符集

字符集

给每个文字符号编号以便于计算机识别处理,就有了计算机字符集。

字符集概述

  • ANCII(American Standard Code for Information Interchange)
  • 进一步变成国际标准ISO-646
    • 该字符集采用7位编码,定义了包括大小写英文字母、阿拉伯数字和标点符号,以及33个控制符号
  • ISO-8859
  • GB2312-80
  • GBK
  • BIG 5

Unicode简述

为了统一字符编码,国际标准化组织ISO的一些国家指定新的国际字符标准,叫做USC,标准编号定位ISO-10646

  • ISO-10646采用4字节编码,将代码空间划分为组、面、行、格

  • 1991年,ISO将Unicode编码并入ISO-10646的0组0字面,叫做基本多语言文字面【BMP

  • ISO-10646足以容纳人类从古至今使用过的所有文字和符号,但绝大部分文字已经很少使用了,超过99%的在用文字都编入了BMP,因此,绝大部分情况下,Unicode都满足需求,并在节省内存和处理时间上都有优势。

  • 为了解决使用上诉两个字面之外的文字,Unicode提出了UTF-16解决方案。

    • UTF-16:对BMP的字面的编码保持二字节不变,对其它字面的文字按一定规则将其32位编码转换为2个16位的Unicode编码

汉字

  • GB 2312-80
    • 早期标准
  • GBK
    • 不是国标,但挺多系统支持
  • GB 18030
    • 是GBK的超集

常用

  • UTF-8
    • 不是定长,1~4字节编码
  • GBK
    • 是定长,双字节编码
  • UTF-16
    • 不是定长,2字节或4字节编码

选择

  • 满足应用支持语言的需求
  • 涉及已有数据的导入,考虑兼容性
  • 如果需要大量的字符运算,选择定长字符集较好
  • 数据量大,支持一般中文,性能要求高,用GBK

MySQL支持的字符集简介

使用命令show character set;查看所有可用的字符集

desc information_schema.character_sets;显示所有的字符集和该字符集默认的校对规则

字符集

  • 30多种,用来定义MySQL存储字符串的方式

校对规则

  • 70多种,用来定义比较字符串的方式

字符集和校对规则是一对多的关系,每个字符集至少对应一个校对规则

MySQL字符集的设置

  • MySQL有四个级别的默认设置:服务器级、数据库级、表级和字段级

服务器级

  • 设置字符集

    • 在my.conf文件内设置

      [mysqld]

      character-set-server=gbk

    • 在启动选项种指定

      mysqld --character-set-server=gbk

    • 编译时指定

      shell>cmake . -ddefault-charset=gbk

  • 默认为latin1

  • 关于校对规则

    • show variables like 'collation_server';

数据库级

  • 设置【可在创建时指定,也可用alter database 修改
    • 如果设置了字符集和校对规则,使用指定的
    • 如果没有指定字符集,按照校对规则关联的字符集
    • 如果没有指定校对规则,按照字符集的默认
    • 如果都没有指定,按照服务器的默认

表级

  • 设置
    • 规则同上类似
  • 查看
    • show create table tablename \G;

列级

  • 基本同上【一般不会遇到吧

连接字符集和校对规则【未实操过,待补充

应用访问时,客户端和服务器之间交互的设置

set names ***【具体还未操作过

字符集的修改

应用开始阶段没有正确设置,不想丢弃数据

  • 先将数据导出
  • 调整数据
  • 创建新的字符集的数据库,将调整后数据导入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值