网站制作学习网PHP→正文:mysql 中文乱码
字体:

mysql 中文乱码

PHP 2015/3/18 0:01:59  点击:不统计

原载于:转www.载for网站制作学习asp必.cn究
 在写一个项目中遇到了mysql 乱码的问题解决步骤如下,特别迅速的解决了mysql中文乱码,一般是编码格式不对影响了mysql存储乱码。

我们以我们的目的编码为utf8 为例
1. 看服务器mysql的编码情况,命令
mysql>show variables like 'character%';
看到服务器返回 
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
全部是 latin1编码,我们要统一为utf8 
修改方式:
编辑my.cnf 在 [mysqld][client]下添加,两个都添加
default-character-set=utf8
然后我们重启mysql 看编码
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
在 默认的datebase中仍然有latin1编码,再次运行命令
mysql>set character_set_database=utf8; 
 
 
2,我们然后看我们对应数据库编码
mysql > use mysql乱码数据库名;status;
Connection id:          42
Current database:       mysql乱码数据库名
Current user:           user@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.73 Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    latin1==========注意这行,我们的数据库也是latin1编码,需要更改
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 6 min 22 sec
 
更改我们数据库编码
mysql> ALTER DATABASE ` mysql乱码数据库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 
再次运行status 编码看到变化为utf8;
 
3. 看mysql连接文件是否是utf8 连接时 set names utf8 ;
 
这样就没有mysql中文乱码了

<网f站o学a习s制p作.cn>

·上一篇:php http跳转到https >>    ·下一篇:Thinkphp用Redis存储session >>
推荐文章
最新文章