锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
http://www.google.cn/search?complete=1&hl=zh-CN&newwindow=1&q=google&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=-1&oq=
complete
hl錛氬尯鍩?br />
newwindow
q錛氭煡璇㈠叧閿瓧
btnG
meta
aq
oq
http://www.google.cn/search?浼氳煩杞埌http://www.google.cn/webhp欏甸潰錛?br />
http://www.google.cn/search?q=123灝卞彲浠ユ悳绱紝鎼炰笉鎳傦紱
getBytes(charset)錛氳繖鏄痡ava瀛楃涓插鐞嗙殑涓涓爣鍑嗗嚱鏁幫紝鍏朵綔鐢ㄦ槸灝嗗瓧絎︿覆鎵琛ㄧず鐨勫瓧絎︽寜鐓harset緙栫爜錛屽茍浠ュ瓧鑺傛柟寮忚〃紺恒傛敞鎰忓瓧絎︿覆鍦╦ava鍐呭瓨涓繪槸鎸塽nicode緙栫爜瀛樺偍鐨勩傛瘮濡?涓枃"錛屾甯告儏鍐典笅錛堝嵆娌℃湁閿欒鐨勬椂鍊欙級瀛樺偍涓?4e2d 6587"錛屽鏋渃harset涓?gbk"錛屽垯琚紪鐮佷負"d6d0 cec4"錛岀劧鍚庤繑鍥炲瓧鑺?d6 d0 ce c4"銆傚鏋渃harset涓?utf8"鍒欐渶鍚庢槸"e4 b8 ad e6 96 87"銆傚鏋滄槸"iso8859-1"錛屽垯鐢變簬鏃犳硶緙栫爜錛屾渶鍚庤繑鍥?"3f 3f"錛堜袱涓棶鍙鳳級銆?br />
new String(charset)錛?/span>榪欐槸java瀛楃涓插鐞嗙殑鍙︿竴涓爣鍑嗗嚱鏁幫紝鍜屼笂涓涓嚱鏁扮殑浣滅敤鐩稿弽錛屽皢瀛楄妭鏁扮粍鎸夌収charset緙栫爜榪涜緇勫悎璇嗗埆錛屾渶鍚庤漿鎹負unicode瀛樺偍銆傚弬鑰冧笂榪癵etBytes鐨勪緥瀛愶紝"gbk" 鍜?utf8"閮藉彲浠ュ緱鍑烘紜殑緇撴灉"4e2d 6587"錛屼絾iso8859-1鏈鍚庡彉鎴愪簡"003f 003f"錛堜袱涓棶鍙鳳級銆?/span>鍥犱負utf8鍙互鐢ㄦ潵琛ㄧず/緙栫爜鎵鏈夊瓧絎︼紝鎵浠ew String( str.getBytes( "utf8" ), "utf8" ) == str錛屽嵆瀹屽叏鍙嗐?br />
setCharacterEncoding()錛?/span>璇ュ嚱鏁扮敤鏉ヨ緗甴ttp璇鋒眰鎴栬呯浉搴旂殑緙栫爜銆?/span>瀵逛簬request錛屾槸鎸囨彁浜ゅ唴瀹圭殑緙栫爜錛屾寚瀹氬悗鍙互閫氳繃getParameter()鍒欑洿鎺ヨ幏寰楁紜殑瀛楃涓詫紝濡傛灉涓嶆寚瀹氾紝鍒欓粯璁や嬌鐢╥so8859-1緙栫爜錛岄渶瑕佽繘涓姝ュ鐞嗐傚弬瑙佷笅榪?琛ㄥ崟杈撳叆"銆傚煎緱娉ㄦ剰鐨勬槸鍦ㄦ墽琛宻etCharacterEncoding()涔嬪墠錛屼笉鑳芥墽琛屼換浣昰etParameter()銆俲ava doc涓婅鏄庯細This method must be called prior to reading request parameters or reading input using getReader()銆傝屼笖錛岃鎸囧畾鍙POST鏂規硶鏈夋晥錛屽GET鏂規硶鏃犳晥銆傚垎鏋愬師鍥狅紝搴旇鏄湪鎵ц絎竴涓猤etParameter()鐨勬椂鍊欙紝java灝嗕細鎸夌収緙栫爜鍒嗘瀽鎵鏈夌殑鎻愪氦鍐呭錛岃屽悗緇殑getParameter()涓嶅啀榪涜鍒嗘瀽錛屾墍浠etCharacterEncoding()鏃犳晥銆傝屽浜嶨ET鏂規硶鎻愪氦琛ㄥ崟鏄紝鎻愪氦鐨勫唴瀹瑰湪URL涓紝涓寮濮嬪氨宸茬粡鎸夌収緙栫爜鍒嗘瀽鎵鏈夌殑鎻愪氦鍐呭錛宻etCharacterEncoding()鑷劧灝辨棤鏁堛?/span>瀵逛簬response錛屽垯鏄寚瀹氳緭鍑哄唴瀹圭殑緙栫爜錛屽悓鏃訛紝璇ヨ緗細浼犻掔粰嫻忚鍣紝鍛婅瘔嫻忚鍣ㄨ緭鍑哄唴瀹規墍閲囩敤鐨勭紪鐮併?br />
浜岋紝web寮鍙戜腑瀛楃緙栫爜鍑犲璁劇疆
瀵逛簬web搴旂敤紼嬪簭錛屽拰緙栫爜鏈夊叧鐨勮緗垨鑰呭嚱鏁板涓嬨?br />
jsp緙栬瘧錛?/span>鎸囧畾鏂囦歡鐨勫瓨鍌ㄧ紪鐮侊紝寰堟槑鏄撅紝璇ヨ緗簲璇ョ疆浜庢枃浠剁殑寮澶淬備緥濡傦細<@pagepageEncoding="GBK"%>銆傚彟澶栵紝瀵逛簬涓鑸琧lass鏂囦歡錛屽彲浠ュ湪緙栬瘧鐨勬椂鍊欐寚瀹氱紪鐮併?br />
jsp杈撳嚭錛?/span>鎸囧畾鏂囦歡杈撳嚭鍒癰rowser鏄嬌鐢ㄧ殑緙栫爜錛岃璁劇疆涔熷簲璇ョ疆浜庢枃浠剁殑寮澶淬備緥濡傦細<%@ page contentType="text/html; charset= GBK" %>銆傝璁劇疆鍜宺esponse.setCharacterEncoding("GBK")絳夋晥銆?br />
meta璁劇疆錛?/span>鎸囧畾緗戦〉浣跨敤鐨勭紪鐮侊紝璇ヨ緗闈欐佺綉欏靛挨鍏舵湁浣滅敤銆傚洜涓洪潤鎬佺綉欏墊棤娉曢噰鐢╦sp鐨勮緗紝鑰屼笖涔熸棤娉曟墽琛宺esponse.setCharacterEncoding()銆備緥濡傦細<META http-equiv="Content-Type" content="text/html; charset=GBK" />錛?/span>濡傛灉鍚屾椂閲囩敤浜唈sp杈撳嚭鍜宮eta璁劇疆涓ょ緙栫爜鎸囧畾鏂瑰紡錛屽垯jsp鎸囧畾鐨勪紭鍏堛傚洜涓簀sp鎸囧畾鐨勭洿鎺ヤ綋鐜板湪response涓?/span>闇瑕佹敞鎰忕殑鏄紝apache鏈変竴涓緗彲浠ョ粰鏃犵紪鐮佹寚瀹氱殑緗戦〉鎸囧畾緙栫爜錛岃鎸囧畾絳夊悓浜巎sp鐨勭紪鐮佹寚瀹氭柟寮忥紝鎵浠ヤ細瑕嗙洊闈欐佺綉欏典腑鐨刴eta鎸囧畾銆傛墍浠ユ湁浜哄緩璁叧闂璁劇疆銆?br />
form璁劇疆錛?/span>褰撴祻瑙堝櫒鎻愪氦琛ㄥ崟鐨勬椂鍊欙紝鍙互鎸囧畾鐩稿簲鐨勭紪鐮併備緥濡傦細<form accept-charset= "gb2312">銆備竴鑸笉蹇呬笉浣跨敤璇ヨ緗紝嫻忚鍣ㄤ細鐩存帴浣跨敤緗戦〉鐨勭紪鐮併?br />
涓夛紝URL鍦板潃
URL鍦板潃涓惈鏈変腑鏂囧瓧絎︽槸寰堥夯鐑︾殑錛屽墠闈㈡弿榪拌繃浣跨敤GET鏂規硶鎻愪氦琛ㄥ崟鐨勬儏鍐碉紝浣跨敤GET鏂規硶鏃訛紝鍙傛暟灝辨槸鍖呭惈鍦║RL涓?br />
URL緙栫爜錛氬浜嶶RL涓殑涓浜涚壒孌婂瓧絎︼紝嫻忚鍣ㄤ細鑷姩榪涜緙栫爜銆傝繖浜涘瓧絎﹂櫎浜?/?&"絳夊錛岃繕鍖呮嫭unicode瀛楃錛屾瘮濡傛眽瀛愩傝繖鏃剁殑緙栫爜姣旇緝鐗規畩銆?br />
IE鏈変竴涓夐」"鎬繪槸浣跨敤UTF-8鍙戦乁RL"錛屽綋璇ラ夐」鏈夋晥鏃訛紝IE灝嗕細瀵圭壒孌婂瓧絎﹁繘琛孶TF-8緙栫爜錛屽悓鏃惰繘琛孶RL緙栫爜銆傚鏋滄敼閫夐」鏃犳晥錛屽垯浣跨敤榛樿緙栫爜"GBK"錛屽茍涓斾笉榪涜URL緙栫爜銆備絾鏄紝瀵逛簬URL鍚庨潰鐨勫弬鏁幫紝鍒欐繪槸涓嶈繘琛岀紪鐮侊紝鐩稿綋浜嶶TF-8閫夐」鏃犳晥銆傛瘮濡?涓枃.html?a=涓枃"錛屽綋UTF-8閫夐」鏈夋晥鏃訛紝灝嗗彂閫侀摼鎺?%e4%b8%ad%e6%96%87.html?a=\x4e\x2d\x65\x87"錛涜孶TF-8閫夐」鏃犳晥鏃訛紝灝嗗彂閫侀摼鎺?\x4e\x2d\x65\x87.html?a=\x4e\x2d\x65\x87"銆傛敞鎰忓悗鑰呭墠闈㈢殑"涓枃"涓や釜瀛楀彧鏈?涓瓧鑺傦紝鑰屽墠鑰呭嵈鏈?8涓瓧鑺傦紝榪欎富瑕佹椂URL緙栫爜鐨勫師鍥犮?/span>褰搘eb server錛坱omcat錛夋帴鏀跺埌璇ラ摼鎺ユ椂錛屽皢浼氳繘琛孶RL瑙g爜錛屽嵆鍘繪帀"%"錛屽悓鏃舵寜鐓SO8859-1緙栫爜錛堜笂闈㈠凡緇忔弿榪幫紝鍙互浣跨敤URLEncoding鏉ヨ緗垚鍏跺畠緙栫爜錛夎瘑鍒備笂榪頒緥瀛愮殑緇撴灉鍒嗗埆鏄?\ue4\ub8\uad\ue6\u96\u87.html?a=\u4e\u2d\u65\u87"鍜?\u4e\u2d\u65\u87.html?a=\u4e\u2d\u65\u87"錛屾敞鎰忓墠鑰呭墠闈㈢殑"涓枃"涓や釜瀛楁仮澶嶆垚浜?涓瓧絎︺傝繖閲岀敤"\u"錛岃〃紺烘槸unicode銆?/span>鎵浠ワ紝鐢變簬瀹㈡埛绔緗殑涓嶅悓錛岀浉鍚岀殑閾炬帴錛屽湪鏈嶅姟鍣ㄤ笂寰楀埌浜嗕笉鍚岀粨鏋溿傝繖涓棶棰樹笉灝戜漢閮介亣鍒幫紝鍗存病鏈夊緢濂界殑瑙e喅鍔炴硶銆傛墍浠ユ湁鐨勭綉绔欎細寤鴻鐢ㄦ埛灝濊瘯鍏抽棴UTF-8閫夐」銆備笉榪囷紝涓嬮潰浼氭弿榪頒竴涓洿濂界殑澶勭悊鍔炴硶銆?br />
rewrite錛?/span>鐔熸倝鐨勪漢閮界煡閬擄紝apache鏈変竴涓姛鑳藉己澶х殑rewrite妯″潡錛岃繖閲屼笉鎻忚堪鍏跺姛鑳姐傞渶瑕佽鏄庣殑鏄妯″潡浼氳嚜鍔ㄥ皢URL瑙g爜錛堝幓闄?錛夛紝鍗沖畬鎴愪笂榪皐eb server錛坱omcat錛夌殑閮ㄥ垎鍔熻兘銆傛湁鐩稿叧鏂囨。浠嬬粛璇村彲浠ヤ嬌鐢╗NE]鍙傛暟鏉ュ叧闂鍔熻兘錛屼絾鎴戣瘯楠屽茍鏈垚鍔燂紝鍙兘鏄洜涓虹増鏈紙鎴戜嬌鐢ㄧ殑鏄痑pache 2.0.54錛夐棶棰樸傚彟澶栵紝褰撳弬鏁頒腑鍚湁"?& "絳夌鍙風殑鏃跺欙紝璇ュ姛鑳藉皢瀵艱嚧緋葷粺寰椾笉鍒版甯哥粨鏋溿?/span>rewrite鏈韓浼間箮瀹屽叏鏄噰鐢ㄥ瓧鑺傚鐞嗙殑鏂瑰紡錛岃屼笉鑰冭檻瀛楃涓茬殑緙栫爜錛屾墍浠ヤ笉浼氬甫鏉ョ紪鐮侀棶棰樸?br />
URLEncode.encode()錛?/span>榪欐槸Java鏈韓鎻愪緵瀵圭殑URL緙栫爜鍑芥暟錛屽畬鎴愮殑宸ヤ綔鍜屼笂榪癠TF-8閫夐」鏈夋晥鏃舵祻瑙堝櫒鎵鍋氱殑宸ヤ綔鐩鎬技銆傚煎緱璇存槑鐨勬槸錛宩ava宸茬粡涓嶈禐鎴愪笉鎸囧畾緙栫爜鏉ヤ嬌鐢ㄨ鏂規硶錛坉eprecated錛夈傚簲璇ュ湪浣跨敤鐨勬椂鍊欏鍔犵紪鐮佹寚瀹氥?/span>褰撲笉鎸囧畾緙栫爜鐨勬椂鍊欙紝璇ユ柟娉曚嬌鐢ㄧ郴緇熼粯璁ょ紪鐮侊紝榪欎細瀵艱嚧杞歡榪愯緇撴灉寰椾笉紜畾銆傛瘮濡傚浜?涓枃"錛屽綋緋葷粺榛樿緙栫爜涓?gb2312"鏃訛紝緇撴灉鏄?%4e%2d%65%87"錛岃岄粯璁ょ紪鐮佷負"UTF-8"錛岀粨鏋滃嵈鏄?%e4%b8%ad%e6%96%87"錛屽悗緇▼搴忓皢闅句互澶勭悊銆傚彟澶栵紝榪欏効璇寸殑緋葷粺榛樿緙栫爜鏄敱榪愯tomcat鏃剁殑鐜鍙橀噺LC_ALL鍜孡ANG絳夊喅瀹氱殑錛屾浘緇忓嚭鐜拌繃tomcat閲嶅惎鍚庡氨鍑虹幇涔辯爜鐨勯棶棰橈紝鏈鍚庢墠閮侀椃鐨勫彂鐜版槸鍥犱負淇敼淇敼浜嗚繖涓や釜鐜鍙橀噺銆?/span>寤鴻緇熶竴鎸囧畾涓?UTF-8"緙栫爜錛屽彲鑳介渶瑕佷慨鏀圭浉搴旂殑紼嬪簭銆?br />
涓涓В鍐蟲柟妗?br />
涓婇潰璇磋搗榪囷紝鍥犱負嫻忚鍣ㄨ緗殑涓嶅悓錛屽浜庡悓涓涓摼鎺ワ紝web server鏀跺埌鐨勬槸涓嶅悓鍐呭錛岃岃蔣浠剁郴緇熸湁鏃犳硶鐭ラ亾榪欎腑闂寸殑鍖哄埆錛屾墍浠ヨ繖涓鍗忚鐩墠榪樺瓨鍦ㄧ己闄楓?br />
閽堝鍏蜂綋闂錛屼笉搴旇渚ュ垢璁や負鎵鏈夊鎴風殑IE璁劇疆閮芥槸UTF-8鏈夋晥鐨勶紝涔熶笉搴旇綺楁毚鐨勫緩璁敤鎴蜂慨鏀笽E璁劇疆錛岃鐭ラ亾錛岀敤鎴蜂笉鍙兘鍘昏浣忔瘡涓涓獁eb server鐨勮緗傛墍浠ワ紝鎺ヤ笅鏉ョ殑瑙e喅鍔炴硶灝卞彧鑳芥槸璁╄嚜宸辯殑紼嬪簭澶氫竴鐐規櫤鑳斤細鏍規嵁鍐呭鏉ュ垎鏋愮紪鐮佹槸鍚TF-8銆?nbsp;
姣旇緝騫歌繍鐨勬槸UTF-8緙栫爜鐩稿綋鏈夎寰嬶紝鎵浠ュ彲浠ラ氳繃鍒嗘瀽浼犺緭榪囨潵鐨勯摼鎺ュ唴瀹癸紝鏉ュ垽鏂槸鍚︽槸姝g‘鐨刄TF-8瀛楃錛屽鏋滄槸錛屽垯浠TF-8澶勭悊涔嬶紝濡傛灉涓嶆槸錛屽垯浣跨敤瀹㈡埛榛樿緙栫爜錛堟瘮濡?GBK"錛夛紝涓嬮潰鏄竴涓垽鏂槸鍚TF-8鐨勪緥瀛愶紝濡傛灉浣犱簡瑙g浉搴旇寰嬶紝灝卞鏄撶悊瑙?/p>
int lLen=b.length,lCharCount=0;
for(int i=0;i<lLen && lCharCount<aMaxCount;++lCharCount){
byte lByte=b[i++];//to fast operation, ++ now, ready for the following for(;;)
if(lByte>=0) continue;//>=0 is normal ascii
if(lByte<(byte)0xc0 || lByte>(byte)0xf) return false;
int lCount=lByte>(byte)0xfc?5:lByte>(byte)0xf8?4
:lByte>(byte)0xf0?3:lByte>(byte)0xe0?2:1;
if(i+lCount>lLen) return false;
for(int j=0;j<lCount;++j,++i) if(b[i]>=(byte)0xc0) return false;
}
return true;
}
public static String getUrlParam(String aStr,String aDefaultCharset)
throws UnsupportedEncodingException{
if(aStr==null) return null;
byte[] lBytes=aStr.getBytes("ISO-8859-1");
return new String(lBytes,StringUtil.isValidUtf8(lBytes)?"utf8":aDefaultCharset);
}
娌℃湁鍖呮嫭瀵圭敤鎴烽粯璁ょ紪鐮佺殑璇嗗埆錛岃繖鍙互鏍規嵁璇鋒眰淇℃伅鐨勮璦鏉ュ垽鏂紝浣嗕笉涓瀹氭紜紝鍥犱負鎴戜滑鏈夋椂鍊欎篃浼氳緭鍏ヤ竴浜涢煩鏂囷紝鎴栬呭叾浠栨枃瀛椼?br />
鍙兘浼氶敊璇垽鏂璘TF-8瀛楃錛屼竴涓緥瀛愭槸"瀛︿範"涓や釜瀛楋紝鍏禛BK緙栫爜鏄? \xd1\xa7\xcf\xb0"錛屽鏋滀嬌鐢ㄤ笂榪癷sValidUtf8鏂規硶鍒ゆ柇錛屽皢榪斿洖true銆傚彲浠ヨ冭檻浣跨敤鏇翠弗鏍肩殑鍒ゆ柇鏂規硶錛屼笉榪囦及璁℃晥鏋滀笉澶с?br />
鏈変竴涓緥瀛愬彲浠ヨ瘉鏄巊oogle涔熼亣鍒頒簡涓婅堪闂錛岃屼笖涔熼噰鐢ㄤ簡鍜屼笂榪扮浉浼肩殑澶勭悊鏂規硶錛屾瘮濡傦紝濡傛灉鍦ㄥ湴鍧鏍忎腑杈撳叆"http://www.google.com/search?hl=zh-CN&newwindow=1&q=瀛︿範"錛実oogle灝嗘棤娉曟紜瘑鍒紝鑰屽叾浠栨眽瀛椾竴鑸兘澶熸甯歌瘑鍒?/span>鏈鍚庯紝搴旇琛ュ厖璇存槑涓涓嬶紝濡傛灉涓嶄嬌鐢╮ewrite瑙勫垯錛屾垨鑰呴氳繃琛ㄥ崟鎻愪氦鏁版嵁錛屽叾瀹炲茍涓嶄竴瀹氫細閬囧埌涓婅堪闂錛屽洜涓鴻繖鏃跺彲浠ュ湪鎻愪氦鏁版嵁鏃舵寚瀹氬笇鏈涚殑緙栫爜銆傚彟澶栵紝涓枃鏂囦歡鍚嶇‘瀹炰細甯︽潵闂錛屽簲璇ヨ皚鎱庝嬌鐢ㄣ?br />
鍥涳紝榪囨護鍣?/span>
濡傛灉闇瑕佺粺涓璁劇疆緙栫爜錛屽垯閫氳繃filter榪涜璁劇疆鏄釜涓嶉敊鐨勯夋嫨銆傚湪filter class涓紝鍙互緇熶竴涓洪渶瑕佺殑璇鋒眰鎴栬呭洖搴旇緗紪鐮併傚弬鍔犱笂榪皊etCharacterEncoding()銆傝繖涓被apache宸茬粡緇欏嚭浜嗗彲浠ョ洿鎺ヤ嬌鐢ㄧ殑渚婼etCharacterEncodingFilter銆?/span>