Java - 在tomcat中修改成utf-8編碼
最近遇到系統需升級到struts 6.7.0,
升級後在eclipse運作正常, 但在tomcat 9.0.95卻出現亂碼,
於是在系統中使用 Java 確認編碼:
System.out.println("Default Charset: " + java.nio.charset.Charset.defaultCharset());
System.out.println("file.encoding: " + System.getProperty("file.encoding"));
結果顯示:
在eclipse中印出:
Default Charset: UTF-8
file.encoding: UTF-8
在tomcat中印出:
Default Charset: x-windows-950
file.encoding: MS950
希望能在tomcat也顯示如下結果:
Default Charset: UTF-8
file.encoding: UTF-8
解決方案: 問chatGPT如何修改tomcat 9.0.95目前編碼, 得到解法如下:
要將 Tomcat 的默認編碼從 x-windows-950 和 MS950 修改為 UTF-8,需要進行以下配置。這涉及到 JVM 的字符集設置、Tomcat 的配置文件調整,以及應用程序級別的字符集處理。
步驟 1:修改 JVM 默認編碼 -- Tomcat 的 JVM 默認編碼會影響整個服務的字符處理,因此需要修改 JVM 的 file.encoding 設置。
定位到 Tomcat 的 CATALINA_BASE/bin 目錄:
如果您沒有設置 CATALINA_BASE,則默認是 CATALINA_HOME。
找到 Tomcat 安裝目錄/bin 目錄。
創建 setenv.bat 文件:
如果文件已存在,直接打開編輯;如果不存在,創建一個新文件,命名為 setenv.bat。
在 setenv.bat 中添加自定義的 JVM 編碼設置:
增加: set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8 (之後重啟 Tomcat)
步驟 2:修改 Tomcat 的 URI 編碼 -- 修改 Tomcat 的 URI 編碼以確保 URL 中的字符也使用 UTF-8。
1. 編輯 conf/server.xml 文件。
2. 找到 <Connector> 配置。例如:
添加或修改 URIEncoding 屬性為 UTF-8:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" /> (之後重啟 Tomcat)
步驟 3:確認 Web 應用的字符集設置 -- 確保 Web 應用本身的字符處理邏輯也使用 UTF-8。
a. JSP 文件設置
在每個 JSP 文件的頂部添加以下指令: <%@ page contentType="text/html; charset=UTF-8" %>
b. Servlet 程序設置
在 Servlet 的代碼中顯式設置請求和響應的字符集:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
c. Web.xml 配置
可以在 WEB-INF/web.xml 文件中統一配置編碼過濾器:
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
確認上述都修改後, tomcat已經修改成utf-8編碼並運作正常了。
留言
張貼留言