zoukankan      html  css  js  c++  java
  • linux(Ubuntu)下mysql字符集完美解决

      本文参考:

      1. http://www.blogjava.net/wldandan/archive/2007/09/04/142669.html

      2. http://chinaapp.sinaapp.com/thread-2610-1-1.html

      3. http://dev.mysql.com/doc/refman/5.1/zh/charset.html

      参考博客中[1]讲明了mysql字符集的设定原理。

    1.MySQL默认字符集
      MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。默认的配置从何而来呢?
        (1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
        (2)安装MySQL 时,可以在配置文件 (my.cnf[linux] my.ini[windows]) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
        (3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
        (4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
        (5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
        (6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
        (7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
    

     网上很多博客中说明的使用命令的方式修改默认配置,大多无效或者好一点仅对当前有效。mysql的服务器进程启动后很难对可能已经在使用的数据表进行更改。

     所以还是应该更改配置文件my.cnf的内容比较科学。参考[2],可以在my.cnf文件加入

    1、在[client]字段里加入default-character-set=utf8,如下:
    
    [client]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    default-character-set=utf8
    
    2、在[mysqld]字段里加入character-set-server=utf8,如下:
    
    [mysqld]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    character-set-server=utf8
    
    3、在[mysql]字段里加入default-character-set=utf8,如下:
    
    [mysql]
    default-character-set=utf8

       在大多数情况下,mysql的安装选择了多语言支持的安装方式,所以步骤3去掉有可能也行。

     不过,我个人不太建议使用这种方式。看看/etc/mysql/my.cnf文件的最后一句“!includedir /etc/mysql/conf.d/” ,这表示该配置外部引入文件。所以可以在/etc/mysql/conf.d/目录下建一个charset.cnf文件

    //charset.cnf
    
    #this file is created by Karlvin for compatibiliy with Chinese Charset.
    [client]
    default-character-set   = utf8
    
    [mysqld]
    character-set-server    = utf8
    
    [mysql]
    default-character-set   = utf8
    

      或者在my.cnf里加入!include FILENAME,然后将上面的内容写在FILENAME里。

      最后输入sudo /etc/init.d/mysql restart。让数据库重启,配置生效。

  • 相关阅读:
    [bzoj1089] 严格n元树
    [bzoj1097] 旅游景点atr
    [hdu3887] Counting Offspring
    [POJ3321] Apple Tree
    [POJ3635] Full Tank?
    git
    【MySQL】数据的导出导入
    Ubuntu python 开发环境配置
    测试markdown
    约瑟夫环问题-java实现
  • 原文地址:https://www.cnblogs.com/karlvin/p/3645428.html
Copyright © 2011-2022 走看看