liferay插入中文失败
事由:公司的liferay项目一直无法实现插入中文。
1、 首先测试字符集:
mysql>status; //显示服务器四种字符集,从上到下它包括服务器字符集,数据库字符集,客户端字符集,链接字符集
如果不是,可以通过/etc/my.cnf配置文件进行修改
【client】用于定义客户端字符集和链接字符集
【mysqld】控制着服务器字符集和数据库字符集
下面的collation-server是校验字符集
Mysql>show character set; //查看校验字符集
2、 查看客户数据库字符集
首先use该数据库,然后“character_set”命令查看
发现使用的不全是utf8,问题找到。
mysql> set character_set_database=utf8; //修改字符集
或执行 mysql>use mydb mysql>alter database mydb character set utf-8; //修改客户字符集
然后查看,已经修改完毕
3、 分析问题
但此时测试还是不行,因为我们的数据库是在西文的编码格式下创建的表,这时虽然编码正确了,但是字段值的编码仍然延续西文编码方式。结论:我们导出数据,修改编码再导入。
4、导出导入
Mysqldump liferay>/root/liferay.sql
Vi /root/liferay.sql
发现近百张表使用西文字符,我们利用vi批量修改。
Mysql>create database liferaytest character set 'utf8'; //创建测试数据库。
#Mysql liferaytest </root/liferay.sql //导入数据
4、 测试:
我们更新liferaytest中一个表,插入中文,奇迹发生了生效了。
6.实施计划
Mysql >drop database liferaytest;
#mysql liferay </root/liferay.sql //导入数据
页面测试,一切ok。
感悟:对于数据编码一定要熟悉,首先它的四种编码一定要一致,其次操系统要支持utf8,其次putty支持utf8,再次保证链接语句支持utf8,这些充分了解的基础上,结论也就容易得到了。
---saisai 20120822