java後臺中文編碼問題
阿新 • • 發佈:2018-12-15
一、對於出現中文亂碼的可能情況:
1、表單的get提交 2、表單的post提交 3、頁面連結傳遞中文引數 4、位址列中引數直接輸入中文提交,我是修改tomcat的字元編碼就好 對於get方式提交的亂碼,可以通過修改tomcat配置檔案來修改,對於post方式提交的亂碼可以通過設定編碼,request.setCharacterEncoding("UTF-8")方法進行編碼設定 對於位址列中拼接引數,直接輸入中文亂碼,可以修改tomcat的編碼格式:
找到tomcat的安裝地址:修改tomcat下的conf/server.xml檔案,找到如下程式碼:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
這段程式碼規定了Tomcat監聽HTTP請求的埠號等資訊。可以在這裡新增一個屬性:URIEncoding,將該屬性值設定為UTF-8,即可讓Tomcat(預設ISO-8859-1編碼)以UTF-8的編碼處理get請求。更改後的程式碼如下所示: <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
二、如果是呼叫介面時,返回的json字串中文亂碼,可以修改@RquestMapping中的編碼格式 @RequestMapping (value =
"/getOrderTrend",method = RequestMethod.
GET,produces =
"text/json;charset=UTF-8")
RequestMapping.POST為post提交方式,直接再谷歌瀏覽器上呼叫介面,用的是get方法,可以選用介面呼叫工具Postman,再IDEA中如果修改各種編碼都沒用,可以嘗試重新部署專案,有可能是專案部署時存在快取,我是直接清除快取也沒用,重新部署一遍,主要是把Artifacts中的war包重新生成,然後tomcat配置中的Artifacts重新部署
三、如果啟動tomcat的時候,控制檯中文亂碼,可以修改IDEA中的tomcat配置
或者:配置tomcat中的Startup/Connection
在執行/除錯 配置對話方塊的Startup/Connection面板中,
勾選Pass environment variables.
並新增一個environment variable,
Name填
JAVA_TOOL_OPTIONS, Value填
-Dfile.encoding=UTF-8.
四、檢視應用的web.xml預設編碼是否是"UTF-8"以下是後端強制轉碼配置
1、表單的get提交 2、表單的post提交 3、頁面連結傳遞中文引數 4、位址列中引數直接輸入中文提交,我是修改tomcat的字元編碼就好 對於get方式提交的亂碼,可以通過修改tomcat配置檔案來修改,對於post方式提交的亂碼可以通過設定編碼,request.setCharacterEncoding("UTF-8")方法進行編碼設定 對於位址列中拼接引數,直接輸入中文亂碼,可以修改tomcat的編碼格式:
找到tomcat的安裝地址:修改tomcat下的conf/server.xml檔案,找到如下程式碼:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
這段程式碼規定了Tomcat監聽HTTP請求的埠號等資訊。可以在這裡新增一個屬性:URIEncoding,將該屬性值設定為UTF-8,即可讓Tomcat(預設ISO-8859-1編碼)以UTF-8的編碼處理get請求。更改後的程式碼如下所示: <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
二、如果是呼叫介面時,返回的json字串中文亂碼,可以修改@RquestMapping中的編碼格式 @RequestMapping
<filter> <filter-name>Set Character Encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</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>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>