ubuntu15.04下设置mysql编码

本文介绍了在Ubuntu 15.04上安装MySQL后如何正确设置UTF-8编码,包括配置文件的修改、避免启动错误,以及解决程序连接数据库时可能出现的编码问题。特别指出,MySQL中应使用'utf8'而非'UTF-8'或'utf-8'来设置编码。

在ubuntu15.04安装了下mysql,然后想设置编码为utf8,搜索了一下网上的教程,大致是以下这样子:

mysql默认编码为latin1,使用mysql -u root -p命令进入mysql控制台

输入mysql>show variables like ‘character%’; 命令显示mysql数据库的编码.

+--------------------------+----------------------------+
  | Variable_name | Value |
  +--------------------------+----------------------------+
  | character_set_client | latin1 |
  | character_set_connection | latin1 |
  | character_set_database | latin1 |
  | character_set_filesystem | binary |
  | character_set_results | latin1 |
  | character_set_server | latin1 |
  | character_set_system | utf8 |
  | character_sets_dir | /usr/share/mysql/charsets/ |
  +--------------------------+----------------------------+

可通过修改mysql的配置文件设置默认编码,sudo vim /etc/mysql/my.cnf打开配置文件.
找到客户端配置[client] 在下面添加

  default-character-set=utf8

  在找到[mysqld] 添加

  character-set-server=utf8

  找到[mysql]添加

  default-character-set=utf8  

网上好多让在[mysqld]添加default-character-set=utf8的,结果会造成mysql启动错误.
完成后使用命令sudo /etc/init.d/mysql stop关闭mysql服务,使用sudo /etc/init.d/mysql start重新启动mysql服务

登录mysql后使用show variables like ‘character%’; 命令查看mysql数据库的编码.

+--------------------------+----------------------------+
  | Variable_name | Value |
  +--------------------------+----------------------------+
  | character_set_client | utf8 |
  | character_set_connection | utf8 |
  | character_set_database | utf8 |
  | character_set_filesystem | binary |
  | character_set_results | utf8 |
  | character_set_server | utf8 |
  | character_set_system | utf8 |
  | character_sets_dir | /usr/share/mysql/charsets/ |
  +--------------------------+----------------------------+

ubuntu15.04有个小的修改

不知道从哪个版本开始,配置文件已经不直接写在my.cnf文件里面了,我们打开这个文件,显示的是下面的两行代码

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

意思就是说包含了这两个文件夹下面的配置文件,这里就有一点变化,我们要打开/etc/mysql/mysql.conf.d/mysqld.cnf文件,找到[mysqld],然后按照最新的编码设置方式填入下面两行。

    character-set-server=utf8
    collation-server=utf8_general_ci

填好之后重启mysql,代码如下:

systemctl restart mysql.service

程序连接数据库的时候需要的问题

设置好上面的参数之后,我们需要用程序连接到数据库,向里面插入数据库的时候有可能还会出现乱码的情况,这时候很有可能就是你指定连接数据库的时候代码中没有指定编码格式,以python连接mysql为例:

conn = MySQLdb.connect(host='***', user='root', passwd='password', db='***', port=3306, charset='utf8')

这里最后的charset=’utf8’一定不能少,少了的话就使用的是数据库默认的latin1编码,读取的时候就会又出现乱码。

是utf8而不是UTF-8也不是utf-8

“UTF-8”是标准写法,在不区分大小写的情况下也可以写成“utf-8”。“UTF-8”也可以把中间的“-”省略,写成“UTF8”。一般程序都能识别,但也有例外(mysql就是一个例外),为了严格一点,最好用标准的大写“UTF-8”。

MySQL数据库中只能使用“utf8”,不能使用“utf-8”,这也没有说为什么,只是mysql定义的时候使用的是utf8,其实都是同一个东西,名字不同而已。

结论:只有在MySQL中可以使用“utf-8”的别名“utf8”,但是在其他地方一律使用写“UTF-8”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值