銆愯浆杞妹€憌eb寮€鍙戜腑鐨勪贡鐮佹€荤粨
1. 闈欐€侀〉闈㈢殑涔辩爜闂
鏂囦欢鐨勭紪鐮佸拰娴忚鍣ㄨ鏄剧ず鐨勭紪鐮佷笉涓€鑷淬€?/span>
1) 妫€鏌ユ枃浠跺師濮嬬殑缂栫爜, 鍙互鐢ㄨ浜嬫湰鎵撳紑, 鐒跺悗閫夋嫨鍙﹀瓨涓烘潵鐪?
2) 缁欏綋鍓嶉〉闈㈠姞鍏ヤ竴涓寚浠ゆ潵寤鸿娴忚鍣ㄧ敤鎸囧畾鐨勭紪鐮佹潵鏄剧ず鏂囦欢瀛楃鍐呭.
- <meta聽http-equiv="content-type"聽content="text/html;聽charset=GBK">聽聽
<meta http-equiv="content-type" content="text/html; charset=GBK">
聽
2. JSP 椤甸潰鐨勪贡鐮侀棶棰?/strong>
1) page 鎸囦护鏈変釜 pageEncoding="GBK" 杩欎釜浼氭寚瀹氬綋鍓嶉〉闈繚瀛樼殑缂栫爜, 濡傛灉鍐欐垚ISO8859-1 灏变笉鑳戒繚瀛樻眽瀛?
2) page 鎸囦护鐨?contentType="text/html; charset=ISO8859-1" 涔熶細鍍忛潤鎬侀〉闈竴鏍疯娴忚鍣ㄦ潵浼樺厛閫夋嫨涓€绉嶇紪鐮?
濡傛灉JSP 涔辩爜鐨勮瘽,涓€鑸氨鏄剧ず鎴?锛岃€屼笖涓嶇浣犵粰娴忚鍣ㄩ€変粈涔堟牱鐨勭紪鐮侊紝瀹冮兘涓嶈兘姝g‘鏄剧ず
3. 琛ㄥ崟鎻愪氦鐨勪贡鐮侀棶棰?Tomcat 鐗规湁)
1). POST 鐨勪贡鐮?/strong>
a. 棣栧厛娴忚鍣ㄦ彁浜よ〃鍗曠殑缂栫爜鏄牴鎹〃鍗曟墍鍦ㄩ〉闈㈡潵鍐冲畾鐨? 鑰屼笉鏄牴鎹彁浜ゅ悗鐨凧SP 椤甸潰鐨勭紪鐮佹潵鍐冲畾鐨? 鎶婃墍鏈夌殑椤甸潰鐨勭紪鐮侀兘璁剧疆鎴愪竴鏍风殑,渚嬪 GBK.
b. 澶勭悊鏂瑰紡灏辨槸鍦ㄨ幏鍙栧弬鏁颁箣鍓嶈缃紪鐮?
request.setCharacterEncoding("GBK");
c. 鍙互鐢ㄨ繃婊ゅ櫒鐨勬柟寮忔潵瑙e喅, Tomcat 宸茬粡甯︿簡涓€涓幇鎴愮殑:
apache-tomcat-5.5.23\webapps\jsp-examples\WEB-INF\classes\filters\SetCharacter
EncodingFilter.java
web.xml
- <filter>聽聽
- <filter-name>Set聽Character聽Encoding</filter-name>聽聽
- <filter-class>filters.SetCharacterEncodingFilter</filter-class>聽聽
- <init-param>聽聽
- <param-name>encoding</param-name>聽聽
- <param-value>GBK</param-value>聽聽
- </init-param>聽聽
- </filter>聽聽
- <filter-mapping>聽聽
- <filter-name>Set聽Character聽Encoding</filter-name>聽聽
- <url-pattern>/*</url-pattern>聽聽
- </filter-mapping>聽聽
<filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
聽
聽
聽2) GET 鏂瑰紡鐨勪贡鐮?/strong>
聽
a.鎵嬪姩杞爜锛?/strong>鐢?setCharacterEncoding() 涓嶈兘瑙e喅. TOMCAT 鐨勪竴涓狟UG, GET 鏂瑰紡浼犻€佺殑琛ㄥ崟鍙傛暟鎬绘槸鐢ㄧ殑 ISO8859-1 缂栫爜. 鎴戜滑瑕佹妸瀹冭浆鎴?GBK 鏂瑰紡.
- String聽username聽=聽request.getParameter("username"); 聽聽
- System.out.println(username); 聽聽
- //聽杞爜,聽鍏堝彇寰楀師濮嬬殑浜岃繘鍒跺瓧鑺傛暟缁?聽聽
- byte[]聽data聽=聽username.getBytes("ISO8859-1"); 聽聽
- //聽鏍规嵁鏂扮殑瀛楃闆嗗啀鏋勯€犳柊鐨勫瓧绗︿覆 聽聽
- username聽=聽new聽String(data,聽"GBK");聽聽
String username = request.getParameter("username"); System.out.println(username); // 杞爜, 鍏堝彇寰楀師濮嬬殑浜岃繘鍒跺瓧鑺傛暟缁? byte[] data = username.getBytes("ISO8859-1"); // 鏍规嵁鏂扮殑瀛楃闆嗗啀鏋勯€犳柊鐨勫瓧绗︿覆 username = new String(data, "GBK");
聽b.閰嶇疆tomcat锛坖ava web椤圭洰甯哥敤鐨勬湇鍔″櫒锛夌殑閾炬帴缂栫爜
鍦↗sp鐨勯〉闈腑閫氳繃瓒呴摼鎺ヤ紶鍙傛暟锛屼緥濡傦細<a href="ss.jsp?userName=zhangsan"></a> 鎺ユ敹鍒扮殑鍙傛暟涓轰贡鐮併€?span style="background-color: #ff0000;">瑙e喅鍔炴硶锛氬湪tomcat瀹夎鐩綍涓嬶紝鎵惧埌conf鐩綍锛屾墦寮€璇ョ洰褰曚笅鐨剆erver.xml鏂囦欢锛屾寜鐓т笅闈㈢殑浠g爜杩涜閰嶇疆锛岀孩鑹查儴鍒嗕负瑕佹坊鍔犵殑鍐呭锛屽皢鍏舵坊涓婂嵆鍙細
- <Connector聽port="8090"聽protocol="HTTP/1.1"聽 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽connectionTimeout="20000"聽 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽redirectPort="8443"聽URIEncoding="UTF-8"/>聽聽
<Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
聽
聽4.瑙e喅鍝嶅簲涔辩爜锛?/span>
聽
鎵€璋撳搷搴斾腑鐨勪贡鐮侊紝灏辨槸鏄剧ず椤甸潰涓婄殑涔辩爜锛屽洜涓洪〉闈㈡暟鎹槸浠庢湇鍔″櫒涓€绔斁鍏ュ搷搴旓紙response锛変腑锛岀劧鍚庡彂閫佺粰娴忚鍣紝濡傛灉鍝嶅簲涓殑鏁版嵁鏃犳硶琚甯歌В鏋愶紝灏变細鍑虹幇涔辩爜闂銆?/p>
鍦╤ttp鐨勫搷搴旓紙response锛変腑娣诲姞缂栫爜淇℃伅锛屼娇鐢ㄥ涓嬫柟寮忥細
- <%@聽page聽contentType="text/html;聽charset=gb2312"%>聽聽
<%@ page contentType="text/html; charset=gb2312"%>
聽
杩欐瑕佹斁鍦╦sp椤甸潰鐨勭涓€琛岋紝鐢ㄦ潵鎸囧畾鍝嶅簲鐨勭被鍨嬪拰缂栫爜鏍煎紡锛宑ontentType涓簍ext/html灏辨槸html鍐呭锛宑harset琛ㄧず缂栫爜涓篻b2312銆傝繖鏍锋祻瑙堝櫒灏卞彲浠ヤ粠鍝嶅簲涓幏寰楃紪鐮佹牸寮忎簡銆?/p>
聽
鍦╤tml涓寚瀹氱紪鐮佹牸寮忋€?/p>
- <head>聽聽
- 聽<meta聽http-equiv="Content-Type"聽content="text/html;聽charset=gb2312"聽/>聽聽
- 聽<title>title</title>聽聽
- </head>聽聽
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>title</title> </head>
聽鍦⊿ervlet涓寚瀹氱紪鐮佹牸寮忥細
- response.setCharacterEncoding()聽聽聽
response.setCharacterEncoding()
聽闄勶細JSP涓殑缂栫爜璁剧疆
1. pageEncoding:<%@ page pageEncoding="UTF-8"%> 璁剧疆JSP缂栬瘧鎴怱ervlet鏃朵娇鐢ㄧ殑缂栫爜
聽
2. contentType: <%@ page contentType="text/html; charset=UTF-8"%> 瀵规湇鍔″櫒鍝嶅簲杩涜閲嶆柊缂栫爜锛屽嵆jsp鐨勮緭鍑烘祦鍦ㄦ祻瑙堝櫒涓樉绀虹殑缂栫爜
聽
3. html椤甸潰charset:
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 缃戦〉鐨勭紪鐮佷俊鎭?锛岃鏄庨〉闈㈠埗浣滄墍浣跨敤鐨勭紪鐮?/p>
聽
4. request.setCharacterEncoding() -- 鍙敤鍦╯ervlet鍜宩sp椤甸潰涓?浣滅敤鏄缃瀹㈡埛绔姹傝繘琛岄噸鏂扮紪鐮佺殑缂栫爜锛屽嵆post鏂瑰紡鎻愪氦鐨勬暟鎹繘琛岀紪鐮併€?/p>
聽
5. response.setCharacterEncoding() -- 鍙敤鍦╯ervlet鍜宩sp椤甸潰涓?瀵规湇鍔″櫒鍝嶅簲杩涜閲嶆柊缂栫爜锛屽嵆jsp鐨勮緭鍑烘祦鍦ㄦ祻瑙堝櫒涓樉绀虹殑缂栫爜锛?/p>
涓?span class="tag"><%@ page contentType="text/html;charset=UTF-8"%>涓€鏍?/span>
聽
6. response.setContentType() -- 鍙敤鍦╯ervlet鍜宩sp椤甸潰涓?瀵规湇鍔″櫒鍝嶅簲杩涜閲嶆柊缂栫爜锛屽嵆jsp鐨勮緭鍑烘祦鍦ㄦ祻瑙堝櫒涓樉绀虹殑缂栫爜锛屼笌<%@ page contentType="text/html;charset=UTF-8"%>涓€鏍枫€傚锛歳esponse.setContentType("text/html;charset=GBK");
聽
7.response.setHeader("Content-Type","text/html;charset=UTF-8"); -- 鍙敤鍦╯ervlet鍜宩sp椤甸潰涓€俽esponse.setHeader 鏄敤鏉ヨ缃繑鍥為〉闈㈢殑澶?meta 淇℃伅, 浣跨敤鏃?response.setHeader( name, contect );
涓?lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8">涓€鏍?/span>