天天看点

liferay调用mysql插入中文

iferay插入中文失败

事由:公司的liferay项目一直无法实现插入中文。

<b>1、         </b><b>首先测试字符集</b>:

mysql&gt;status;    //显示服务器四种字符集,从上到下它包括服务器字符集,数据库字符集,客户端字符集,链接字符集

<a href="http://blog.51cto.com/attachment/201208/165406420.png" target="_blank"></a>

如果不是,可以通过/etc/my.cnf配置文件进行修改

【client】用于定义客户端字符集和链接字符集

<a href="http://blog.51cto.com/attachment/201208/165600973.png" target="_blank"></a>

【mysqld】控制着服务器字符集和数据库字符集

下面的collation-server是校验字符集

<a href="http://blog.51cto.com/attachment/201208/165612272.png" target="_blank"></a>

Mysql&gt;show character set;  //查看校验字符集

<a href="http://blog.51cto.com/attachment/201208/165623874.png" target="_blank"></a>

<b>2、         </b><b>查看客户数据库字符集</b><b></b>

<b></b>

首先use该数据库,然后“character_set”命令查看

<a href="http://blog.51cto.com/attachment/201208/165632896.png" target="_blank"></a>

发现使用的不全是utf8,问题找到。

mysql&gt; set character_set_database=utf8;  //修改字符集

或执行

  mysql&gt;use mydb

  mysql&gt;alter database mydb character set utf-8;  //修改客户字符集

然后查看,已经修改完毕

<a href="http://blog.51cto.com/attachment/201208/165642599.png" target="_blank"></a>

<b>3、         </b><b>分析问题</b><b></b>

但此时测试还是不行,因为我们的数据库是在西文的编码格式下创建的表,这时虽然编码正确了,但是字段值的编码仍然延续西文编码方式。结论:我们导出数据,修改编码再导入。

<b>4</b><b>、导出导入</b><b></b>

Mysqldump liferay&gt;/root/liferay.sql

Vi /root/liferay.sql

发现近百张表使用西文字符,我们利用vi批量修改。

<a href="http://blog.51cto.com/attachment/201208/165652861.png" target="_blank"></a>

Mysql&gt;create database liferaytest character set 'utf8';    //创建测试数据库。

#Mysql  liferaytest  &lt;/root/liferay.sql  //导入数据

<b>4、         </b>测试:

我们更新liferaytest中一个表,插入中文,奇迹发生了生效了。

<a href="http://blog.51cto.com/attachment/201208/165701888.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201208/165710970.png" target="_blank"></a>

<b>6.</b><b>实施计划</b><b></b>

Mysql &gt;drop database liferaytest;

#mysql liferay &lt;/root/liferay.sql   //导入数据

页面测试,一切ok。

<a href="http://blog.51cto.com/attachment/201208/165718523.png" target="_blank"></a>

感悟:对于数据编码一定要熟悉,首先它的四种编码一定要一致,其次操系统要支持utf8,其次putty支持utf8,再次保证链接语句支持utf8,这些充分了解的基础上,结论也就容易得到了。

                                         ---saisai 20120822

本文转自zsaisai 51CTO博客,原文链接:http://blog.51cto.com/3402313/970109