1. 程式人生 > >java部署ubuntu後中文顯示問號問題

java部署ubuntu後中文顯示問號問題

再次 data 導入數據庫 vim comment 在那 prot 全部 內容

1、首先先回憶自身項目的編碼格式,即在本地進行編碼時使用的編碼格式。UTF-8
2、檢測tomcat的設置問題,在web.xml和server中的設置:
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"/>

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>

3、檢測ubuntu服務器中的編碼格式

//檢測本地語言環境:
locale
//進行配置的修改
vi /etc/profile

//添加下列行(LC_ALL表示全部設置,但不影響LANG):
export LANG="en_US.UTF-8"
export LC_ALL="zh_CN.UTF-8"
//設置後使其起效
source /etc/profile
//當出現 cannot 錯誤時 ,使用以下命令進行安裝相應語言包
sudo locale-gen zn_CN.UTF-8
//當起效後,要再次進入配置中修改,將剛添加的兩行刪除,不然會影響jdk環境

4、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;

5、另外
mysql默認的字符集為latin1的,所以要改為utf8的。很多網上的文章執行“sudo vi /etc/mysql/my.cnf”,可是打開一看,裏面就兩行話:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

想來mysql的配置文件應該是在那兩個文件夾下面,於是嘗試之下打開了/etc/mysql/mysql.conf.d/ 下的mysqld.cnf文件,執行下面的命令:

~$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

[client]
default-character-set=utf8

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

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

後重啟Mysql服務器
~$ sudo /etc/init.d/mysql restart
~$ mysql -u root -p
mysql> show variables like "%char%"
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

 

java部署ubuntu後中文顯示問號問題