zoukankan      html  css  js  c++  java
  • MySql字符编码详解

    MySQL 对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和行()。  

    查看:

      mysqli_query($conn,"set names gb2312");

    实质是设置了三个:

    上面我们看到,要让 MySQL 不出现乱码,要点是在于数据库连接的编码方式,而数据库表的编码方式并不重要,MySQL 会自动做好编码转换工作。

     

    ·数据库表的编码方式

    上面我们看到,要让 MySQL 不出现乱码,要点是在于数据库连接的编码方式,而数据库表的编码方式并不重要,MySQL 会自动做好编码转换工作。

    那么在做数据库设计的时候,怎么选择编码方式呢?其实这时候考虑的应该是另外几个因素,比如:

    1. 字符集的兼容性。如果预期将在一个字段中同时保存简体、繁体、日文等字符,那你就必须选择一个能同时容纳这几种字符集的编码方式,一般来说,UTF-8 是最好的选择。

    2. 存储效率。如果预期仅保存简体中文,那么选择 GBK 会比 UTF-8 的存储效率高一些。不过,似乎大多数情况下,这一因素并不很重要。

    3. 结合实际的应用情况,尽量减少数据库访问过程中的编码转换环节。如下图所示的传输过程,其中“C转换”是客户端的转换工作(可能是应用程序负责,也可能是 Driver 负责,比如 JDBC Driver),“S转换”是服务端的编码转换(由 MySQL 自动进行)。


    客户端程序 ------------> 客户端接口 ----------> 服务端接口 --------------> 数据库存储
     UCS2/GBK/…  C转换        编码传输         S转换   UTF-8/GBK/…

    客户端程序 <------------ 客户端接口 <---------- 服务端接口 <------------ 数据库存储
     UCS2/GBK/…  C转换        编码传输         S转换   UTF-8/GBK/…

     

    参考:

    【1】http://blog.csdn.net/maquan/article/details/5903131

     

     

  • 相关阅读:
    NSHashtable and NSMaptable
    架构的本质:构造定律与结合规则
    软件复用的基础和形式
    架构模式:循环模式、管道模式
    待整理
    functions and closures are reference types-函数和闭包是引用类型
    @autoclosure-可以让表达式自动封装成一个闭包:输入的是一个表达式
    Python 运算符优先级
    Linux下chkconfig命令详解
    Linux下Redis开机自启(Centos)
  • 原文地址:https://www.cnblogs.com/souroot/p/2733191.html
Copyright © 2011-2022 走看看