Mysql 之 编码问题

学习ThinkPHP时,中文插入乱码;

1)网页上设置了utf-8;

2)数据库设置'DB_CHARSET'=>'UTF-8';

3)Mysql建表用的也是CHARSET=utf8;

但是结果在Mysql中查看还是乱码。

查看数据库的编码方式

mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+
7 rows in set (0.24 sec)

之前以为以下四个保持一致就可以了,但是发现退出mysql再次进入之后,编码方式又变回到latin1。

set character_set_client=utf8;

set character_set_database=utf8;

set character_set_results=utf8;

set character_set_server=utf8;

搜索了一下修改的方法,推荐 http://www.jb51.net/article/30104.htm

1、找到mysql的配置文件,拷贝到etc目录下(可以不用停止mysql服务),这一步很重要

  把/usr/share/doc/mysql-server-5.1.73/my-large.cnf 复制到 /etc/my.cnf

  即用命令:cp /usr/share/doc/mysql-server-5.1.73/my-large.cnf  /etc/my.cnf

  (目录中mysql-server-5.1.73的版本号可能都不太一样,修改以下即可)

2、打开my.cnf修改编码

  在[client]下增加default-character-set=utf8

  在[mysqld]下增加default-character-set=utf8

  同时加上init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

3、重新启动mysql

  service mysqld restart

  (虽然此处遇到mysql服务停止失败,但是启动成功,忽略停止失败...)

4、查看数据库编码

mysql> show variables like 'character\_set\_%';

PS:以前都是通过PHP的函数转化后再插入数据库中,现在觉得应该是数据库的编码方面的问题。

希望越学越顺利~

原文地址:https://www.cnblogs.com/la-isla-bonita/p/3577575.html