zoukankan      html  css  js  c++  java
  • mysql学习之路_乱码问题

    中文数据问题:

    中文数据问题本质就说字符集问题,

    计算机只识别二进制,人类识别符号;需要友谊个二进制与字符对应关系(字符集)。

    报错:服务器没有识别对应的四个字节。

    服务器认为的数据是utf8,一个汉字有三个字节,读取三个字节转换成汉字(失败),剩余的再读三个字节,最终失败!

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

    Show  viriables like ‘character_set %’;(查看字符集);对外处理默认字符集

    基本上服务器是万能的,什么字符集都能识别。问题的根源:客户端只能识别GBK而服务器是utf-8,矛盾产生。

    解决方案1

    改变服务器。默认字符集为GBK

    Set character_set_client =GBK;

    注意:数据的来源是服务器,解析数据是客户端(客户端只识别GBK;两个字节一个汉字);但服务器给的数据却是utf8,三个字节一个汉字,乱码!!!!!!

    解决方案2

    修改服务器给客户端的数据数据集为GBK

    Set character_set_result=GBK;

    Set 变量=值 ;修改只会是会话级别(当前客户端:当次连接有效:关闭失效)

    快捷方式:

    设置服务器对客户端的字符集的认识:

    Set names 字符集;

    例:set names gbk;

    ==>cheracter_set_client

    ==>character_set_result;

    ==>character_set_connection;

    Connection: 连接层;字符集中间者统一了效率更高:

    校对集问题:

    校对集:数据比较的方式(三种方式)

    _bin:binary;二进制比较取出二进制位,一位一位进行比较,区分大小写。

    _ci:case sensitive; 大小写敏感,区分大小写;

    _ci:case insensitive; 大小写不敏感。不区分大小写。

    检查数据库支持的校对集

    Show collation;

    对比:使用utf_8_bin_ci来验证不同校对集的效果。

    校对集:必须在没有数据之间声明好。

    Web乱码问题:

    动态网站:部分构成;

    浏览器:appache 服务器(php)数据库服务器

    三个部分都有自己的字符集;数据在三个部分之间传递很容易产生乱码;

    如何解决乱码问题:

    统一编码(三码合一);

    事实上不可能:浏览器用户管路(不能控制)

    但是必须解决这些问题

     

  • 相关阅读:
    【原创】Algorithms:原地归并排序
    Java中相等测试
    测试可变字符序列stringBuilder
    呃。。第一篇随笔。
    hiho兄弟的字典树之争(hiho1014)
    字典树
    最大公约数
    素数
    递归算法1
    logging模块,collections模块,random模块
  • 原文地址:https://www.cnblogs.com/lqh969696/p/9637426.html
Copyright © 2011-2022 走看看