javaweb項目JSP載入靜態資源出現中文亂碼__web

來源:互聯網
上載者:User

*強調內容*javaweb項目JSP載入靜態資源出現中文亂碼

首先介紹自己在編碼方面遇到的一亂碼問題:jsp頁面載入時,載入中文名的靜態資源,出現亂碼,自然就擷取不到請求資源,無法加重了,jsp頁面是沒有亂碼的。但是後台配置了編碼過濾器的,為什麼還會亂碼呢。
網上搜尋答案,雖然找到瞭解決問題的方法,但是沒有理解原因。 首先先看看亂碼的解決方案

http://blog.csdn.net/haitianxiaowu1/article/details/52460105(轉載),這位博主的編碼解決方案,對於我這種菜鳥足夠了。
一、瞭解常識
1.UTF-8國際編碼,GBK中文編碼。GBK包含GB2312,即如果通過GB2312編碼後可以通過GBK解碼,反之可能不成立;
2、web tomcat:預設是ISO8859-1,不支援中文的
3.Java.nio.charset.Charset.defaultCharset() 獲得平台預設字元編碼;
4.getBytes() 是通過平台預設字元集進行編碼;

二、引入
在學習任何一門技術時,經常會有初學者遇到中文亂碼問題,比如MySQL,是因為在安裝時沒有設定;而在Servlet中,也會遇到中文亂碼問題;
比如:
OutputStream out = response.getOutputStream();
out.write(String );
輸出中文時可能會出現亂碼;
輸出亂碼的問題是程式用UTF-8編碼,而瀏覽器預設用GBK解碼了,因此會出現亂碼;

三、Servlet相關的幾種亂碼
1、瀏覽器調用jsp,html等頁面中文顯示亂碼
1)檔案本身是以utf-8編輯儲存的(myEclipse中在properties中滑鼠右鍵選擇utf-8)
(2)瀏覽器用utf-8解析:
(手動)==> 在瀏覽器中右鍵選擇編碼格式為utf-8
(智能)==> 在檔案中寫入如: 通過標籤類比response頭,起到告訴瀏覽器用utf-8的編碼解析
(智能)==> response.setContentType(“text/html;charset=UTF-8”);起到告訴瀏覽器用utf-8的編碼解析
==>GET請求(URI方式傳遞參數亂碼):主要相關內容
出現情況:瀏覽器訪問
如:顯示使用者名稱和密碼

解決方案:問題本質是get方式傳遞的參數內容預設編碼方式問ISO8859-1,而且使用request.setCharacterEncoding(“utf-8”)也無法解決問題。

法一:要解決這個問題,修改tomcat伺服器的設定檔。修改tomcat目錄下的conf/server.xml檔案的第43行:
修改前內容:

<Connector port="8080" protocol="HTTP/1.1"     maxThreads="150"   connectionTimeout="200000"     redirecPort="8443"/>

修改後內容:

<Connector port="8080" protocol="HTTP/1.1"     maxThreads="150"   connectionTimeout="200000"     redirecPort="8443"    URIEncoding="utf-8"/>

法二:String usernameString = new String(username.getBytes("ISO-8859-1"),"UTF-8");

借鑒了一堆別人的東西,下面說明我配置了編碼過濾器為什麼還會出現中文亂碼的原因:
jsp頁面載入時,會載入src引入的靜態資源,請求方式是GET,而GET方式的請求會經過tomcat,在沒有配置tomcat解析請求的解碼方式的情況下,預設是ISO-8859-1,然後再經過後台配置的編碼過濾器解析時,由於請求已經經過tomcat的解析,編碼過濾器再次解析請求地址時,就會出現中文亂碼。

個人理解,如有錯誤,希望大神指教,方便學習

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.