linux中war中文乱码,windows下的web项目放到linux的tomca下运行,mysql出现中文乱码的解决方案...

写一个web项目,使用了 spring , spring mvc, hibernate, maven ,mysql 在windows环境下,mysql没有出现中文乱码问题,而在linux环境下,mysql出现了中文乱码问题。现做一简单总结:

1.web项目连接数据库的URL一定要写对,

jdbc_url=jdbc:mysql://localhost:3306/ecampus?useUnicode=true&characterEncoding=UTF-8

2.mysql建的数据库,web项目,全部都是UTF-8编码 。

3.web项目是使用maven构建的,使用mavne在编译类,打war包千万指定为使用UTF-8格式 。如果在war 包运行在windows环境,则千万不要指出。因为默认情况下,maven使用系统的默认字符集进行编译,打war包。,windows是GBK,linux是UTF-8,

如:

1.6

UTF-8

UTF-8

UTF-8

org.apache.maven.plugins

maven-compiler-plugin

3.1

1.6

1.6

UTF-8

true

true

true

true

org.apache.maven.plugins

maven-war-plugin

2.4

UTF-8

4.mysql 共有四个字符集。包括:server,db,client,connection.

mysql所建的数据库(db)必须是utf8。其它的可使用默认latin1(此为linux下mysql默认的字符集),当然最好使用utf-8。这样,在mysql命令行也能看到中文,并且不出现中文乱码。读取记录时,也是中文,无乱码。如果使用mysql默认字符集latin1(ISO-8859-1)那么在mysql命令行,中文还是乱码,但是使用HeidiSQL工具连接mysql数据库,还是可以看到中文的,并且记取记录时,也是中文。

ubuntu下修改mysql的默认字符集:

定位到/etc/mysql/my.cnf文件

[client]标记下修改为

default-character-set=UTF-8

[mysqld] 标记下修改为

character-set-server=UTF-8

修改后,记得重启mysql服务:

使用命令:service mysql restart

使用命令:mysql -uroot -proot 登陆到mysql命令行

在mysql命令行,选择数据库后,使用status;命令,可以看到字符集信息。

Server characterset:    latin1

Db     characterset:    utf8

Client characterset:    latin1

Conn.  characterset:    latin1

5.我用的liux发行版是(ubuntu 12.04 桌面版,)

在命令行。输入locale  查看当前linux的默认字符集。

这里,一定要全部使用en_US.UTF-8  .在ubuntu下,是修改/etc/default/locale文件 。

修改成:

LANG=en_US.UTF-8

LANGUAGE=en

LC_CTYPE=en_US.UTF-8

LC_NUMERIC=en_US.UTF-8

LC_TIME=en_US.UTF-8

LC_COLLATE=en_US.UTF-8

LC_MONETARY=en_US.UTF-8

LC_MESSAGES=en_US.UTF-8

LC_PAPER=en_US.UTF-8

LC_NAME=en_US.UTF-8

LC_ADDRESS=en_US.UTF-8

LC_TELEPHONE=en_US.UTF-8

LC_MEASUREMENT=en_US.UTF-8

LC_IDENTIFICATION=en_US.UTF-8

LC_ALL=

重启一下系统后。

这样,ubuntu 系统是 UTF-8,web项目的war 包是UTF-8,  mysql建的数据库也是UTF8, 中文就不会出现乱码了。这里还有一点小区别,就是刚才提到的,如果mysql 的server characterset ,client characterset ,conn character 都是latin1,那么,从mysql命令行看中文,还是乱码,但读出来就不是乱码了。可能使用HeidiSQL来读一下。 这里放心 。ubuntu是支持lantin1(ISO-8859-1)的,可以用命令:locale -m来查看。mysql底层此时使用latin1进行编码 。如果想在mysql 命令行中文不出现乱码,就需要修改mysql的默认字符集。修改方法上面已经提到过了。

6.而在windows系统下想要不出现乱码需要这样做:windows默认字符集是GBK(好像修改不了的) ,所以maven构建时,也不用指出是utf-8编码 ,使用系统默认,GBK即可。而mysql 数据库,需要修改为如下配置。

Server characterset:    GBK

Db     characterset:    utf8

Client characterset:    GBK

Conn.  characterset:    GBK

即修改mysql 的默认字符集。具体 操作为:

修改my.ini文件

[client]标记下修改为

default-character-set=GBK

[mysqld] 标记下修改为

character-set-server=GBK

以上是我这三天来,摸索出来的,希望能帮到各位。。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值