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完成

  • 相关阅读:
    [saiku] 系统登录成功后查询Cubes
    216. Combination Sum III
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    211. Add and Search Word
    210. Course Schedule II
    分硬币问题
    开始学习Python
  • 原文地址:https://www.cnblogs.com/abtious/p/13486576.html
Copyright © 2011-2022 走看看