• MySQL之中文数据问题


     随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

     最近在复习MySQL,为什么是复习呢?大家应该都懂,技能好久不用都还给老师了,因为以前学习没有记录的习惯,学的时候会不用就忘,

    而且用的时候不能快速理解,还要再次观看视频或者翻看厚厚的书籍,所以本次复习随笔记录,方便以后查看。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

    中文数据问题

    中文数据问题本质是字符集问题

    计算机只识别二进制:人类更多识别符号:需要有个二进制与符号的对应关系(字符集)

     

    原因:xD5xD5xD4xBD代表的是“张悦”在当前编码(字符集)下对应的二进制编码转换的十六进制:两个汉字=>四个字节

     

    报错:服务器没有识别对应的四个字节:服务器任务数据是UTF8-个汉字有三个字节:读取三个字节转换成汉字(失败),剩余的再读三个字节(不够):最终失败。

    所有的数据库服务器认为(表现)的一些特性都是通过服务端的变量来保存:系统先读取自己的变量,看看应该怎么表现。

    //查看服务器到底识别那些字符集

    Show character set;

     

    基本上:服务器是万能的,什么字符集都支持

    //既然服务器识别这么多:总有一种是服务器默认的跟

    Show variables like 'character_set%';

     

    问题根源:客户端数据只能是GBK,而服务器任务是UTF8:所以矛盾产生

    解决方案:改变服务器,默认的接收字符集为GBK

     

    插入中文的效果:

     

    查看数据效果:依然是乱码

    原因:数据来源是服务器,解析数据是客户端(客户端只识别GBK:只会两个字节一个汉字);

    但是事实服务器给的数据却是UTF8,三个字节一个汉字:乱码

    解决方案:修改服务器给客户端的数据字符集为GBK

    Set character_set_results = gbk;

     

    查看数据效果

     

    Set 变量 = ;修改只是会话级别,当前连接成效,关闭失效

    设置服务器对客户端的字符集的认识:可以使用快捷方式,set names 字符集;

    Set names gbk; ===>character_set_client,character_set_results,character_set_connection

  • 相关阅读:
    MySQL LIMIT OFFSET
    Sublime Text 3安装清爽主题(著名的Soda Theme)
    MySQL无法远程连接解决方案
    算法题:李嘉诚保险柜密码问题
    一些不错的算法学习练习站点
    [转]MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题
    使用什么工具连接MySQL Server
    CentOS 7修改MySQL 5.6字符集为UTF-8
    CentOS 7 Minimal编译安装MySQL5.6
    如何使浏览器默认下载文件而不是打开文件
  • 原文地址:https://www.cnblogs.com/lirongyang/p/11088923.html
Copyright © 2020-2023  润新知