zoukankan      html  css  js  c++  java
  • 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;
    ---------------------

    3.这个方法行不通后,我就开始设置linux服务器中的编码方式

    在/etc/sysconfig/i18n中添加编码方式

    LANG="zh_CN.UTF-8"
    SYSFONT="latarcyrheb-sun16"

    4.添加之后,重启系统还是不行,由于我是把项目放到tomcat服务器下,最后尝试了一下修改tomcat编码

    在server.xml文件中添加编码方式

        <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

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

    5.重启服务后,运行项目OK



  • 相关阅读:
    探秘小程序(9):父页面与自定义组件交互
    探秘小程序(8):scroll-view组件
    探秘小程序(7):view组件
    探秘小程序(6):微信支付
    探秘小程序(5):用户信息
    通向全栈之路(6)—无密码ssh连接
    探秘小程序(4):授权
    探秘小程序(3):登录
    探秘小程序(2):自定义组件
    [Python]json对象转换出错expected string or buffer python
  • 原文地址:https://www.cnblogs.com/waj2018/p/10314560.html
Copyright © 2011-2022 走看看