呵呵,困扰了我两天的问题终于解决了!
在此给遇到同样问题的朋友一点点思路!
由于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>
ubuntu8.04下mysql中文乱码解决方法
最新推荐文章于 2022-01-03 14:30:42 发布