1. 程式人生 > >MyEclipse ci3中JSP亂碼

MyEclipse ci3中JSP亂碼

今天一個加入我的QQ群:IT十年(170273637)的朋友,請教關於MyEclipse 2016 CI 3 JSP頁面中文亂碼的問題;開始是JSP頁面在編輯器中亂碼,解決之後又發現在瀏覽器中檢視是亂碼,說是該配置的都已經配置了,還問我是不是MyEclipse新版本的問題,我當時還很自信的說應該不是;由於當時是工作時間不方便,我就說晚上幫他看看。

中文亂碼問題

搞Web開發的,特別是Java Web開發最常遇到這種問題,也是最頭疼的,對於初學者來說!

出現亂碼問題,要檢查以下幾個方面:

1、檔案的編碼

MyEclipse中可以檢視檔案的屬性,看預設編碼是什麼;

2、HTML中的編碼

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3、JSP的編碼
<%@ page language="java" pageEncoding="UTF-8"%> 
4、如果是通過Java程式碼輸出內容,需要設定響應內容的編碼

在java後臺的Action程式碼或者Servlet程式碼中用response的方法來設定輸出內容的編碼方式,有以下三個方法: 

1、response.setCharacterEncoding("UTF-8");2、response.setContentType("text/html;charset=UTF-8");3、response.setLocale(new java.util.Locale("zh","CN"));
通常用第一個就夠了;

5、如果用了其它的框架,可能還需要設定框架的預設編碼

6、執行請求的編碼

request.setCharacterEncoding("UTF-8")
7、Tomcat等容器的預設編碼

預設情況下,tomcat使用的的編碼方式:iso8859-1
修改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" redirectPort="8443" URIEncoding="UTF-8" />

尷尬的境地

這一次我錯了,晚上通過遠端桌面檢視,Tomcat的預設編碼沒有配置,按照上面的配置之後預設頁面好了。我就認為肯定沒問題了。這朋友很聰明,立馬新建一個JSP頁面,輸入幾個中文在瀏覽器中檢視,結果又出現亂碼了,NM這我就蒙逼了!還好,我想到了檢視網頁原始檔,開啟之後我都驚呆了,一個新建的JSP頁面不足十行HTML程式碼,在瀏覽器中檢視原始檔卻有上千行程式碼(粗略估計),其中看到最多的除了指令碼,就是HTML標籤中的“data-genuitec”屬性,密密麻麻的,我的密集恐懼症差點犯了。搜尋吧,完全不知道這東西是什麼鬼,還好找到一篇文章“MyEclipse2016 live preview功能引發的問題”,找到問題關鍵了。還真是新版本的Bug惹的禍。

解決方法

關閉實時預覽功能


點選“眼睛”圖示,可以開啟或關閉實時預覽功能


結束語

做人要嚴謹,寫程式碼更要嚴謹!

今天是七夕,早上剛犯了個錯誤,把乞巧節看成了乞丐節!

今天是七夕,你們是怎麼過的?

我?這不就和MyEclipse的Bug戰鬥了一個晚上!