Java、JSP、HTML、XML編寫都要符合以下編碼規則!

 

1 所有的 .java|.jsp|.html|.xml 源文件均使用utf-8編碼格式保存到系統磁盤。
如:在Eclipse中編輯文件,選中文件打開右鍵菜單選擇屬性,將文本文件編碼設置爲其他並選擇UTF-8;也可以在
Eclipse——首選項——常規——內容類型中設置各種文件的缺省編碼,這樣以後所有的文本文件都使用統一編碼。


2 在頁面顯示中文方面 .jsp文件中必須將文件編碼格式pageEncoding、<@page>指令中contentType編碼格式、<html>的<meta>標籤編碼格式都設置爲utf-8。
如:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>中文問題</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
</html>
注意: META標籤中的編碼字符必須是"utf-8",如果不加中劃線,則在ie下出現亂碼情況,但ie的原文件查看卻是中文!


3 把表單提交內容的字符集設爲utf-8,在jsp、servlet或者filter中使用request.setCharacterEncoding("utf-8");
此行代碼必須寫在最前面,如果在此前進行任何request.getPragrmber()方法都會使字符轉換失效!


4 頁面超連接連接中帶的漢字如中文目錄"/系統/頁面/首頁.jsp",則在tomcat/conf/server.xml中的配置文件中加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正確內容。如:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" />
注:如果使用get方法提交中文參數如"?name=張三",則必須使用encode編碼轉換爲百分號表示來傳遞,如:
"?name=%E5%BC%A0%E4%B8%89",注意長度不要超過連接字符串最大長度。
編碼方法:[JavaScript]     encodeURIComponent("中文");
                    [Java&JSP]     java.net.URLEncoder.encode("中文");
解碼方法:[JavaScript]     decodeURIComponent("%E4%B8%AD%E6%96%87");
                    [Java&JSP]     java.net.URLDecoder.decode("%E4%B8%AD%E6%96%87");


5 連接MySQL數據庫時修改mysql在windows/my.ini裏default-character-set=utf-8,並將mysql裏數據庫和表也都設爲utf8_unicode_ci。


6 數據庫連結url:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8
注意,關鍵就在於此:此句中間是'&'不是'&amp;'這是因爲數據庫連結時,在.jsp和.java文件中應該用&號,而XML文件中才需要用&amp;


7 使用AJAX方式提交請求時必須爲XMLHttpRequest添加頭聲明
注意:如果已經存在已此名稱命名的http頭,則覆蓋之。此方法必須在open方法後調用。
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;ch
arset=UTF-8");

Tomcat亂碼問題:Get方法的處理
tomcat對post和get的處理方法不一樣,所以過濾器不能解決get的亂碼問題,它需要在其他地方設置。
打開<tomcat_home>/conf目錄下server.xml文件,找到對8080端口進行服務的Connector組件的設置部分,給這個組件添加一個屬性:URIEncoding="UTF-8"。修改後的Connector設置爲:
<Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
;              connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
* 注意修改後重新啓動tomcat才能起作用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章