1.問題背景及解決方式
最近在回顧Tomcat部署Web項目,自己簡單地從Tomcat的下載安裝及配置server.xml文件入手,學習Tomcat的項目部署,在自己使用IDEA創建了一個簡單地web項目,並嘗試將項目復制到Tomcat的安裝運行目錄下:.\apache-tomcat-8.5.50\webapps中,使用這種簡單地拖放式管理來驗證我項目的部署是否能被Tomcat服務器帶動並訪問,於是我創建了一個oa命名的項目,訪問hello.html頁面,項目如下:
.html文件是IDEA自動生成的HTML4文件格式,在當中我添加了<title>與<body>中的標簽頁。
創建好oa項目之后,我將此項目存放在我Tomcat的webapps目錄下托管:
我在Tomcat的安裝bin目錄中點擊startup.bat運行項目之后,在google瀏覽器中打開並訪問我的hello.html頁面,尷尬的一幕發生了,頁面顯示出現了亂碼:
於是在網上找了一些解決方案,最終自己解決了這個問題,感謝CSDN博客博主經驗分享:
https://blog.csdn.net/jjarchu/article/details/89575277,本文的問題基於該博客做參考,並結合自己實際的問題背景進行問題總結。
具體解決方案如下:
① 首先,我在Tomcat配置文件server.xml中的啟動默認端口8080與重定向端口8443處添加了:URIEncoding="UTF-8" ;
這個因為原來默認的Tomcat8的server.xml文件中是沒有添加這個”UTF-8”的編碼的,但是很多地方web訪問的話都需要,所以直接加上,但是添加之后重啟startup.bat繼續訪問頁面,發現問題並沒有得到解決,依然是這個錯誤編碼頁面:
② 之后我借鑒了博文中的第一點,修改了我本來hello.html中的H4頁面配置,添加了:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">之后,再次重啟Tomcat並訪問頁面,問題得到解決:
2.問題解決方案總結
這里來總結一下Tomcat訪問靜態資源如.html、.jsp文件容易遇到的編碼問題的解決方法,匯總一下,便於查詢:
1.方式一:
在原本的.html文件中添加:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2.方式二:
在Tomcat8的安裝目錄server.xml中的啟動默認端口8080與重定向端口8443處添加了:URIEncoding="UTF-8" ;
3.方式三:
在web.xml文件中設置編碼:
<mime-mapping> <extension>htm</extension> <mime-type>text/html;charset=UTF-8</mime-type> </mime-mapping> <mime-mapping> <extension>html</extension> <mime-type>text/html;charset=UTF-8</mime-type> </mime-mapping>
4.方式四:
如果是IDE啟動,設置啟動參數 Debug configurations->tomat 8.0->argument
-Dfile.encoding=UTF8;
如果是Tomcat服務形式啟動,設置catalina.bat
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" -Dfile.encoding=UTF8
5.方式五:
將文件用記事本或者EditPlus打開,另存為UTF-8格式