用过MYSQL数据库的朋友估计都回遇到存取中文乱码的情况,在下最近正在作一个protal的项目,接触了这方面的一些东西,下面把我们的解决方案写出来与大家分享。
首先,建表的时候要制定字符集,让它支持unicode。
例如:
注意最后一行后面的utf8。
其次,启动数据库的时候要进行一定的配置,最简单的办法就是修改my.cnf文件。这个文件一般会在/etc/或者c:/下面。如果没有的话,可以自己建一个。一般在Mysql安装目录下面会有例如my-huge.cnf,my-medium.cnf等一些例子,拷贝过去也可以。
修改的方法之一就是在my.cnf文件中加上一句
default-character-set=utf8
这句话指定了Mysql启动时候的--default-character-set参数。类似可以在my.cnf里面设置其他启动参数,比如最大连接数等。mysql的启动参数可以通过man mysqld来查询。
另外的方法更加直接,那就是直接设置mysql服务器的变量。具体做法就是在my.cnf里面加上如下几句
set-variable=character_set_database=utf8
set-variable=character_set_server =utf8
set-variable=character_set_system =utf8
这个就直接把mysql数据库的字符集设定为了utf8。同样也可以通过类似
set-variable=max_connections=200
的语句来设置最大连接数等其他信息。
在mysql服务器启动之后在系统内会保持很多个变量,类似shell中的环境变量。可以通过如下命令列出来
mysql>show variables;
然后可以根据需要进行修改。
这里我们只关注和字符有关的变量,可以敲下面的命令。
mysql>show variables like'char%';
这样就可以看到几个和字符有关的变量,据在下的经验,把上述三个设成utf8就可以支持中文了。
首先,建表的时候要制定字符集,让它支持unicode。
例如:
CREATE
TABLE
`centrex_department` (
`DEPT_ID` bigint ( 20 ) NOT NULL auto_increment,
`GRP_ID` bigint ( 20 ) NOT NULL ,
`DEPT_NAME` varchar ( 20 ) NOT NULL ,
PRIMARY KEY (`DEPT_ID`,`GRP_ID`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;;
`DEPT_ID` bigint ( 20 ) NOT NULL auto_increment,
`GRP_ID` bigint ( 20 ) NOT NULL ,
`DEPT_NAME` varchar ( 20 ) NOT NULL ,
PRIMARY KEY (`DEPT_ID`,`GRP_ID`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;;
注意最后一行后面的utf8。
其次,启动数据库的时候要进行一定的配置,最简单的办法就是修改my.cnf文件。这个文件一般会在/etc/或者c:/下面。如果没有的话,可以自己建一个。一般在Mysql安装目录下面会有例如my-huge.cnf,my-medium.cnf等一些例子,拷贝过去也可以。
修改的方法之一就是在my.cnf文件中加上一句
default-character-set=utf8
这句话指定了Mysql启动时候的--default-character-set参数。类似可以在my.cnf里面设置其他启动参数,比如最大连接数等。mysql的启动参数可以通过man mysqld来查询。
另外的方法更加直接,那就是直接设置mysql服务器的变量。具体做法就是在my.cnf里面加上如下几句
set-variable=character_set_database=utf8
set-variable=character_set_server =utf8
set-variable=character_set_system =utf8
这个就直接把mysql数据库的字符集设定为了utf8。同样也可以通过类似
set-variable=max_connections=200
的语句来设置最大连接数等其他信息。
在mysql服务器启动之后在系统内会保持很多个变量,类似shell中的环境变量。可以通过如下命令列出来
mysql>show variables;
然后可以根据需要进行修改。
这里我们只关注和字符有关的变量,可以敲下面的命令。
mysql>show variables like'char%';
这样就可以看到几个和字符有关的变量,据在下的经验,把上述三个设成utf8就可以支持中文了。