問題描述:
1、將項目部署到服務器之后從頁面接收的中文亂碼
2、數(shù)據(jù)庫中原有的數(shù)據(jù)都能正常顯示
產(chǎn)生原因:沒有對Tomcat服務器和MySQL進行配置更改
解決流程:
一、 修改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配置
修改數(shù)據(jù)庫的配置文件my.cnf文件,此文件如果通過rpm安裝一般在/etc/目錄下,具體修改成的樣式如下圖所示
修改完成后,我們保存配置的修改,然后執(zhí)行命令service mysqld restart。重新啟動數(shù)據(jù)庫。
進入mysql,使用status查看數(shù)據(jù)庫信息,執(zhí)行命令show variables like ‘character%’; 查看更改后的編碼格式,執(zhí)行 use 數(shù)據(jù)庫名;然后執(zhí)行show create database 數(shù)據(jù)庫名; show create table 數(shù)據(jù)表名;查看對應的數(shù)據(jù)庫和數(shù)據(jù)表編碼
修改此數(shù)據(jù)庫的編碼方式為utf8(默認是latin1)
mysql> alter database 數(shù)據(jù)庫名 character set utf8;
SET NAMES ‘utf8’;