ubuntu8.04下mysql中文乱码解决方法

呵呵,困扰了我两天的问题终于解决了!
在此给遇到同样问题的朋友一点点思路!
由于ubuntu linux下默认的mysql编码是binary,中文解析肯定是乱码!

你可以登录你的数据库查看:
启动服务:sudo /etc/init.d/mysql start
登录:mysql -uroot -p(你的密码)
查看编码:show variables like '%chara%';
这个时候显示:
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | binary                       |
| character_set_connection | binary                       |
| character_set_database   | binary                       |
| character_set_filesystem | binary                     |
| character_set_results    | binary                       |
| character_set_server     | binary                       |
| character_set_system     | binary                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

下面开始设置编码了:
大家都知道在win下面设置编码是修改my.ini配置文件,linux下面也是修改配置文件,只不过文件是:my.cnf!
步骤:
sudo gedit /etc/mysql/my.cnf
因为要使用超级权限才能修改此文件!
打开之后在
[client]
default-character-set=utf8   
    

注意:上面的中间
  
default-character-set=utf8 代码是加入,不是修改,下面同理!
同样还有一个地方!
[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'

同样这两行代码是加入!
这个是保存文件!

执行:
停止数据库服务:sudo /etc/init.d/mysql stop
重新启动:sudo /etc/init.d/mysql start
进入数据库:
mysql -uroot -p(你的密码)
查看编码:
show variables like '%chara%';

在查看编码就是这样了!

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

这个时候应该是可以正常显示中文了!
但是我的还是不行,因为我是用hibernate对象模型自动生成的数据库表(当然我也设置了编码了,但是就是不行)!
那么现在就有一个本人测试出来的自创的办法!

就是建表的时候设置编码:
如果你是sql建表:
那么如下:
mysql> create table user(
    -> `id` int auto_increment,
    -> `name` varchar(30),
    -> primary key(`id`)
    -> )default charset=utf8;
注意最后设置编码的步骤至关重要!

当然如果和我一样hibernate生成数据库表的:
1.设置<property name="hibernate.show_sql">true</property>
2.导表(此时的表肯定还是中文乱码)
3.复制控制台打印的sql,在建表的后面加上
default charset=utf8;
4.所有打印的sql贴在终端,别忘了sql后面的分号!
重新出来的表就可以正常显示中文了!

当然如果还是乱码就检查自己的步骤是否正确!
再就是在hibernate配置文件中的url最好写成这样:
<property name="connection.url">        <![CDATA[jdbc:mysql://205.36.55.64:3306/yourdatabasename?useUnicode=true&characterEncoding=utf8 ]]>
</property>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值