zoukankan      html  css  js  c++  java
  • Mysql 字符编码

    知识补充:数据库字符编码
    一、MySQL支持的字符集
    1.查看所有可用的字符集
    show character set;
    或者查看information_schema.character_sets,也可以显示所有的字符集和该字符集默认的校队规则
    2.MySQL的字符集包括字符集(character)和校对规则(collation)两个概念。
    1)字符集用来定义MySQL存储字符串的方式
    2)校对规则用来定义 字符串比较的方式
    3)字符集和校对规则是一对多的关系,一个字符集有多个校对规则供你选择!
    校对规则命名约定:它们以相关的字符集名开始,通常包括一个语言名,并且以
    _ci(忽略大小写)、
    _cs(大小写敏感)或者
    _bin(二元,即比较是基于字符编码的值而与language无关)结束。
    查看字符集的校对规则:
    show collation like '字符集前缀%';
    二、MySQL内部的字符集和校对规则设置
    1.服务器字符集和校对规则设置
    暂时了解一下即可
    2.数据库字符集和校对规则设置
    CREATE DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]
    查看当前数据库的字符集和校对规则:
    show variables like 'character_set_database';
    show variables like 'collation_database';
    ALTER DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]
    3.表字符集和校对规则设置
    CREATE TABLE tbl_name (column_list)
    [DEFAULT CHARACTER SET charset_name [COLLATE collation_name]]

    ALTER TABLE tbl_name
    [DEFAULT CHARACTER SET charset_name] [COLLATE collation_name]
    4.字段(列)字符集和校对规则
    遇到这种情况概率比较小,这只是MySQL提供给我们一个灵活设置的手段
    三、MySQL连接字符集设置
    过程中要设置正确,诚实守信,这样子如果全部设置正常,服务器端会自动的去按照你设置的字符集转换,但是也要避免想换转换的过程,最好都设置成一样的编码!
    连接字符集设置:客户端和服务器之间交互的字符集
    1.对于客户端和服务器段的交互操作,MySQL提供了3个不同的参数:
    1)character_set_client:客户端来源数据使用的字符集
    2)character_set_connection:连接层字符集
    3)character_set_results:返回结果字符集
    知识拓展:数据在客户端和服务器之间交互的过程中字符集转换的大概过程
    1) MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
    2) 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,内部操作字符集的确定方法如下:
    1>使用每个数据字段设定的字符集;
    2>若上述值不存在,则使用对应数据表设定的字符集;
    3>若上述值不存在,则使用对应数据库设定的字符集;
    4>若上述值不存在,则使用服务器设定的字符集。
    3) 将操作结果从内部操作字符集转换为character_set_results。
    这3个参数设定的字符集应该相同,并且客户端使用的字符集确实是参数character_set_client的值,才可以确保用户的数据可以正确的返回且输出。
    查看当前设置:show variables like 'character_set%';
    修改:
    set names 字符集,可以同时修改3个参数的值,对本次有效
    也可以在配置文件中设置:
    [mysql]
    default-character-set=字符集
    修改CMD命令行字符集:
    chcp 65001 #换成utf-8代码页(设置为utf-8之后最好手动修改显示字体 )
    chcp 936 #换成默认的gbk


    客户端使用字符,连接层使用的字符集,内部使用的字符集,返回使用的字符集,最好都设置层一样的,并且客户端使用的字符集确实是character_set_client参数的值,这样就绝对不会出现问题!

  • 相关阅读:
    Banner实现无线轮播
    二维码生成
    自定义View圆环
    百度地图
    OkHttp解析
    自定义控件生成随机数
    OkHttp中文文档
    Da购物车
    Angular过滤器
    popupWindow
  • 原文地址:https://www.cnblogs.com/xiaowie/p/11910264.html
Copyright © 2011-2022 走看看