zoukankan      html  css  js  c++  java
  • 数据库之插入数据时和读取数据时编码转换原理和乱码出现的原因

    插入数据时和读取数据时编码转换原理如图所示

    (我设置客户端传入和传回编码是一回事---这是告诉连接器的,客户端具体给什么编码和以什么方式解读是另一回事,不一致就会出现插入失败和乱码)

    乱码时的两种情况:

    1.我设置客户端传入编码是utf8,连接器utf8,服务器utf8
          但客户端传入gbk编码的汉字,将GBK认为是utf8的过程压根就会出错,如果检验不严格也可能通过,但会出现数据丢失(后来再读出时也出现乱码情况)

    2.我设置传回客户端的编码是utf8,连接器从服务器中读出数据转换成utf8传回客户端,但是客户端将utf8的编码认为是GBK编码解读从而出现乱码

    ------------------------------------------------------

    网页设置为utf8编码,传入应该没有问题,mysql客户端编码是gbk所以会插入失败,传回汉字时时乱码(将传入和传回设为gbk就行了)
    总结:这两种情况都是客户端说话不算话造成的,实际传入编码和设置不一致,解读方式和设置传回编码不一致。

    -------------------------------------------------------------------------------------------------------------------------------------------------

    *.连接器设置为latin1,客户端传入设置为gbk,给的也是gbk编码,设置传回为gbk,以GBK编码解读,但会出现乱码
    这是由于编码大的兼容小的,gbk编码多,latin1编码少,所以会丢失数据造成乱码
    总结:编码空间大小==> 服务器>=connection>=client
    *.在mysql客户端中暂时设置编码格式使传入,传回,连接器编码一致可以用set names gbk完成

  • 相关阅读:
    QT5每日一学(五)QT布局管理器
    构造注入链:POP
    Jarvis OJ--PHPINFO
    XCTF(Web_php_unserialize)
    XCTF-反序列化中_wakeup()函数
    session反序列化
    PHP反序列化
    默认安装的phpMyAdmin会存在哪些安全隐患
    如何进行数据库备份
    开启mysql外部访问(root外连)
  • 原文地址:https://www.cnblogs.com/abtious/p/13486576.html
Copyright © 2011-2022 走看看