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

     

     

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/souroot/p/2733191.html
Copyright © 2011-2022 走看看