幼兒園行風建設(shè)網(wǎng)站用稿資料免費網(wǎng)站模板庫
今天新開了一個小項目,我丟,亂碼了,咋回事,好久沒遇到過了,都忘了咋回事。今天必須記錄下來,避免繼續(xù)踩坑
Tomcat 8
不需要進行任何配置即可,它默認的是GBK,而win10 win7 默認的也是GBK,所以
項目放webapp下然后 啟動startup.bat 所展現(xiàn)的啟動窗口,也不會有亂碼。至于idea中配置Tomcat8 ,控制臺也不會有亂碼,如果有,那就看下圖是否設(shè)置為GBK
Tomcat 9
默認的是utf - 8,所以需要做下處理:
? 1、修改 conf/logging.properties 下圖紅框內(nèi)容,utf-8 改為 GBK
2、bin\catalina.out 增加以下內(nèi)容
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% ?-Dfile.encoding=GBK"
網(wǎng)上都是教set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% ?-Dfile.encoding=utf-8"
運行項目也沒問題,但是在項目中輸出System.out.print() 就亂碼了,因為這時輸出到idea控制臺的編碼是utf-8,而你的 Settings - >Editor -> Console 中配置的是GBK,所以亂碼。如果你改
Settings - >Editor -> Console 的 GBK 為 utf-8 ,那么idea運行Tomcat時,所打印出來的Tomcat相關(guān)信息又是亂碼了,因為你第一步設(shè)置為GBK了。所以第一步,你還得改為utf-8 。但這又會有一個問題,那就是你把項目放到 Tomcat 的webapp下運行,這時候所彈出來的運行窗口又是亂碼了,因為該窗口默認的是gbk,哈哈,你還得把第一步改為gbk才行。
所以建議按此文章內(nèi)的正常步驟設(shè)置即可
?3、確保idea配置如下圖
那么,Tomcat 9經(jīng)過上面配置后,效果跟Tomcat 8 一樣了
其他說明
1、亂碼跟idea這些配置沒有關(guān)系的,當然,下圖我們就應(yīng)該這樣配置,在項目未創(chuàng)建之前都該這樣配置了
2、Tomcat 10 啟動報錯
參考網(wǎng)文:
原來是 Servlet、JSP 與 Spring 的版本之間的匹配出了問題。眾所周知,2018 年,Java EE 改名為 Jakarta EE。這導致一些 JAR 包的包名也在之后的版本中進行了更改。這對本項目的影響是,Spring 本身是不含 Servlet、JSP 的 JAR 包的,但其依賴這些 JAR 包。如果在 Tomcat 服務(wù)器中部署的項目使用了 Spring,則這部分的 JAR 包將由 Tomcat 服務(wù)器來提供。而問題在于,Spring 5.2.9.RELEASE 期望的 JAR 包前綴是 javax,而Tomcat 10.0.0 提供的 JAR 包前綴是 jakarta。因此,Spring 報了一個認為沒有 Servlet、JSP 的 JAR 包的錯。
(查看 Tomcat 的各版本對應(yīng)的 Servlet 等的版本的網(wǎng)址是:http://tomcat.apache.org/whichversion.html)
??由于 Tomcat 與 Servlet、JSP 的 JAR 包關(guān)系密切,因此無法通過替換 Tomcat 下的文件夾 lib 中 Servlet、JSP 的 JAR 包來解決。而且這也無法通過在 Maven 中添加正確的 Servlet、JSP 依賴來解決,實際上,如果該工程的純 Java 代碼的部分沒有使用到 Servlet、JSP 的 JAR 包,其實這里在 Maven 添加的 Servlet、JSP 依賴都可以刪掉。(更專業(yè)的說法是,在基于 Maven 的 Web 應(yīng)用中,對 Servlet、JSP 的依賴范圍為 provided。)
??幸運的是,Tomcat 9.0.41 使用的 JAR 包前綴是 javax 。因此,這里只需要再安裝一個Tomcat 9.0.41 即可解決(不需要卸載已有的 Tomcat,因為不同版本的 Tomcat 的安裝路徑可以不同,只是安裝時需要先關(guān)閉已有的 Tomcat 服務(wù)器,避免占用同一個端口號)。
3、網(wǎng)上說在idea的Tomcat配置里加,其實不用加
4、這屬于URI的亂碼,跟上面亂碼不是一回事,但也要設(shè)置下
?