Tomact設置字符集,在Tomcat家目錄下的conf中的server.xml配置文件,在配置端口的選項中設置字符集:mysql
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />sql
其中,8080端口爲能夠訪問應用的端口,connectionTimeout爲鏈接超時時間, URIEncoding="UTF-8",設置字符集爲utf-8,useBodyEncodingForURI="true"表示請求參數的編碼方式要使用請求體的編碼方式。數據庫
開啓應用,訪問並登陸應用以後以後,發現出現字符亂碼問題,排查多是數據庫問題,進入數據庫mysql,查看字符集:服務器
show variables like '%char%';編碼
能夠看到,紅色框內的character_set_database字符集爲utf8的,可是訪問應用時仍然出現亂碼問題, 查看其餘設置,黃色框內的字符集爲Latin1,這是數據庫初始配置,這裏不設置也可能出現亂碼問題。server
character_set_client 、character_set_connection、character_set_results 這三個設置是客戶端每次鏈接進來設置的。登陸mysql以後,命令:SET names utf8; 就至關於設置了此三個選項,也能夠分別設置:xml
SET character_set_client = utf8;ip
SET character_set_connection = utf8;utf-8
SET character_set_results = utf8;io
退出mysql鏈接以後,從新啓動應用服務,登陸應用,查看字符集。
備註:三個選項字符集是須要遠程鏈接mysql的客戶端進行設置的,詳解,
character_set_client :發送的數據必須與client指定的編碼相同,服務器會使用該編碼來解讀客戶端發送過來的數據;
character_set_connection:經過此設置與client相同,該編碼不會致使亂碼,當執行的是查詢語句時,客戶端發送過來的數據會先轉換成connection指定的編碼,只要客戶端發送過來的數據與client指定的編碼一致,就不會出現問題;
character_set_results :響應的編碼,即查詢結果返回給客戶端的編碼,說明客戶端必須使用result指定的編碼來解碼。
客戶端遠程鏈接mysql默認是拉丁字符集,可是執行的數據庫文件指定字符集爲utf8的,因此在執行以後,訪問應用會出現亂碼問題。
Linux下遠程mysql,最好指定字符集,否則會出現亂碼問題:
mysql -h <mysql_ip>:<port> -u <user_name> -p <password> --default-character-set=utf8