Linux下Mysql乱码解决方案

 最近在做ProjectForge的源码修改,当然改用了MySQL数据库,但改过之后,有一个蛮讨厌的问题,当然是乱码了。

PF这边使用的是UTF-8编码,按照设想UTF-8应该是一切正常的啊,原来还是需要在MySQL这边做一些设定:
 
彻底解决方案:
修改Linux下的/etc/my.cnf文件,我的Linux版本为RHEL6.1,MySQL是本地源安装的,版本号为5.1.52,这里我贴出我的/etc/my.cnf文件,其中一部分是我手动加的,我会加以说明
[code="java"]
$sudo emacs /etc/my.cnf
[/code]
内容如下:
[code="java"]
#配置客户端
[client]
#默认字符集为utf8
default-character-set=utf8
 
#配置服务器端
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#默认字符集为utf8
default-character-set=utf8
#设定连接数据库时使用utf8编码
init_connect='SET NAMES utf8' 
#设定使用的数据库存储引擎
default-storage-engine=INNODB
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[/code]
 
然后需要重启mysql使配置文件生效:
[code="java"]
$sudo /etc/init.d/mysqld restart
[/code]
 
然后再次登录mysql:
[code="java"]
mysql> \s
[/code]
显示内容如下:
[code="java"]
mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.1.52, for redhat-linux-gnu (i386) using readline 5.1
 
Connection id:          11
Current database:       projectforge
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.52 Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 2 hours 55 min 24 sec
 
Threads: 9  Questions: 620  Slow queries: 0  Opens: 68  Flush tables: 1  Open tables: 61  Queries per second avg: 0.58
--------------
 
mysql>
 
[/code]
 
发现都改成了UTF8字符集了,现在就不用再怕乱码了。
当然你的mysql配置文件也不一定存储在/etc/my.cnf,也可能是etc/mysql/my.cnf等,修改方法都大同小异,在此笔者就不一一说明。

你可能感兴趣的:(linux,linux,mysql,数据库,乱码)