java web项目发布到linux服务器上运行出现乱码

我们项目的开发是在windows下完成的。
然后导出.sql数据库文件,并导出war包,准备部署到linux下的tomcat服务器上。

部署完成出现中文问题:

问题描述:
1.数据库中原有的数据都能正常显示
2.页面显示读取出来出现乱码

问题的解决过程:

考虑流程:1、数据库存储格式,索引的格式编码 2、项目的文件编码  3、浏览器(tomcat部署编码格式)

一、项目中默认编码设置是UTF-8
二、项目开发环境Eclipse的编码方式是UTF-8(确保代码中的中文显示正常)
三、Tomcat配置:

       更改两个文件的配置
       1.server.xml(添加红色部分)

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"

URIEncoding="UTF-8" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  URIEncoding="UTF-8"/>


        2.web.xml

<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>

默认tomcat7中上面这段代码在注释中,把它注释去掉。
重启tomcat使配置生效。
四、mysql配置
1.修改mysql默认配置:
默认的mysql配置:server、client都是latin1,对中文是不支持的,这里改为utf8
方法:
修改配置文件:
#vim /etc/mysql/my.cnf 

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

重启mysql

/etc/init.d/mysql restart

检查编码方式:

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
character_set_client     | utf8                       |
| character_set_connection | utf8                 |
| character_set_database   | latin1               |
| character_set_filesystem | binary               |
character_set_results    | utf8                      |
character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

2.修改项目使用的数据库的配置
修改此数据库的编码方式为utf8(默认是latin1)
mysql> alter database 数据库名 character set utf8;

查看此数据库的编码:
mysql> status

Connection id:        41
Current database:    tslcrms
Current user:        root@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.5.38-0ubuntu0.14.04.1 (Ubuntu)
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:            53 min 14 sec

mysql> show create database tslcrms;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| tslcrms  | CREATE DATABASE `数据库名` /*!40100 DEFAULT CHARACTER SET  utf8  */ |
+----------+------------------------------------------------------------------+

3.导入数据库文件中的表、字段的编码方式都修改成utf8
可以直接改.sql文件,改完导入。
也可以先导入,再用命令查看和更改。


附:在mysql中使用命令修改字符集:
      mysql> SET character_set_client = utf8 ;

     mysql> SET character_set_connection = utf8 ;
     mysql> SET character_set_database = utf8 ;
     mysql> SET character_set_results = utf8 ;
     mysql> SET character_set_server = utf8 ;
     mysql> SET collation_connection = utf8 ;
     mysql> SET collation_database = utf8 ;
     mysql> SET collation_server = utf8 ;

 
     SET NAMES 'utf8';
相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伏特加的滋味

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值