日期:2014-05-16  浏览次数:20835 次

linux上安装mysql对中文gbk的支持

本来写了不少东西,结果提交以后什么都没有,郁闷~~~~~ 算了,从网上转贴一篇吧,当作资料了~~~

在mysql数据库中,使用的是latin字符集,所以无法正常的支持中文字符,中文在数据库中显示为乱码“?”号。为了让mysql可以正常使用 中文,尤其是当使用jsp连接mysql的时候,我们需要使用gbk的字符集,因此我们要对mysql进行以下设置,以便其有效的支持中文:

1.修改my.cnf文件
my.cnf文件是mysql的配置文件,我们可以从mysql的安装目录根据其自带模板来

建立
#cp /usr/local/mysql/support-files/my-huge.cnf? /etc/my.cnf
#vi /etc/my.cnf

在此文件中相应位置加入
default-character-set = gbk
########################
[client]
default-character-set = gbk
[mysqld]
default-character-set = gbk
#########################
修改结束以后,保存,然后使用客户端登录
#mysql -u root -p
在客户端中输入
>status;
显示的数据中如果出现:
Server characterset:??? gbk
Db???? characterset:??? gbk
Client characterset:??? gbk
Conn.? characterset:??? gbk
则表示修改成功。

2.建立库表时指定gbk字符集
在建立库表的时候我们需要指定gbk字符集
建立数据库:

CREATE DATABASE dbname DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
建立数据表
Create table tablename(
id int(10) unsigned NOT NULL AUTO_INCREMENT,
name varchar(15) NOT NULL default '',
PRIMARY KEY? (id)
) TYPE=MyISAM DEFAULT CHARACTER SET gbk

建立好以后,在客户端中使用:
>show cereate table tablename;
如果最后一行显示gbk,则表示成功

3.修改jdbc驱动
jsp连接mysql需要使用jdbc驱动,在使用的时候,我们需要设置好字符集
String user="root";
String password="123";
String url="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=gbk"
Class.forNname("com.mysql.jdbc.Driver");//装载驱动类;
Connection con=DriverManager.getConnection(url,user,password);//取得连接
其中dbname为你数据库的名字,url中的gbk即为使用的字符集


?? 做好以上三步以后,mysql就可以支持gbk中文了。

4. hibernate JPA configuration

?<properties>
????????? <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
????????? <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/dbtest?useUnicode=true&amp;characterEncoding=utf-8"/>

????????? <property name="hibernate.connection.username" value="user"/>
????????? <property name="hibernate.connection.password" value="password"/>

????????? <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
????????? <property name="hibernate.generate_statistics" value="false"/>
????????? <property name="hibernate.show_sql" value="false"/>
??????? </properties>

?

?