å¨JSP/Servlet ä¸ä¸»è¦æ以ä¸å 个å°æ¹å¯ä»¥è®¾ç½®ç¼ç ï¼pageEncoding="UTF-8"ãcontentType="text/html; charset=UTF -8"ãrequest.setCharacterEncoding("UTF-8")åresponse.setCharacterEncoding ("UTF-8")ï¼å ¶ä¸å两个åªè½ç¨äºJSPä¸ï¼èå两个å¯ä»¥ç¨äºJSPåServletä¸ã
1ãpageEncoding="UTF-8"çä½ç¨æ¯è®¾ç½®JSPç¼è¯æServletæ¶ä½¿ç¨çç¼ç ã
ä¼æå¨ç¥ï¼JSPå¨æå¡å¨ä¸æ¯è¦å 被ç¼è¯æServletçãpageEncoding="UTF-8"çä½ç¨å°±æ¯åè¯JSPç¼è¯å¨å¨å°JSPæ件ç¼è¯æServletæ¶ä½¿ç¨çç¼ç ãé常ï¼å¨JSPå é¨å®ä¹çå符串ï¼ç´æ¥å¨JSPä¸å®ä¹ï¼èä¸æ¯ä»æµè§å¨æ交çæ°æ®ï¼åºç°ä¹±ç æ¶ï¼å¾å¤é½æ¯ç±äºè¯¥åæ°è®¾ç½®é误å¼èµ·çãä¾å¦ï¼ä½ çJSPæ件æ¯ä»¥GBK为ç¼ç ä¿åçï¼èå¨JSPä¸å´æå®pageEncoding="UTF-8"ï¼å°±ä¼å¼èµ·JSPå é¨å®ä¹çå符串为乱ç ã
 注æ: å¦æpageEncodingå±æ§åå¨ï¼é£ä¹JSP页é¢çå符ç¼ç æ¹å¼å°±ç±pageEncodingå³å®ï¼ å¦åå°±contentTypeå±æ§ä¸çcharsetå³å®ï¼å¦æcharsetä¹ä¸åå¨ï¼JSP页é¢çå符ç¼ç æ¹å¼å°±éç¨é»è®¤çISO-8859-1ã
2ãcontentType="text/html;charset=UTF-8"çä½ç¨æ¯æå®å¯¹æå¡å¨ååºè¿è¡éæ°ç¼ç çç¼ç ã
å¨ä¸ä½¿ç¨response.setCharacterEncodingæ¹æ³æ¶ï¼ç¨è¯¥åæ°æå®å¯¹æå¡å¨ååºè¿è¡éæ°ç¼ç çç¼ç ãæå¡å¨å¨å°æ°æ®åéå°æµè§å¨åï¼å¯¹æ°æ®è¿è¡éæ°ç¼ç æ¶ï¼ä½¿ç¨çå°±æ¯è¯¥ç¼ç ã
3ãrequest.setCharacterEncoding("UTF-8")çä½ç¨æ¯è®¾ç½®å¯¹å®¢æ·ç«¯è¯·æ±(å³è¡¨åä¸æ交çæ°æ®ï¼éjsp页é¢æ¬èº«)è¿è¡éæ°ç¼ç çç¼ç ã
该æ¹æ³ç¨æ¥æå®å¯¹æµè§å¨åéæ¥çæ°æ®è¿è¡éæ°ç¼ç ï¼æè 称为解ç ï¼æ¶ï¼ä½¿ç¨çç¼ç ãÂ
4ãresponse.setCharacterEncoding("UTF-8")çä½ç¨æ¯æå®å¯¹æå¡å¨ååºè¿è¡éæ°ç¼ç çç¼ç ã
æå¡å¨å¨å°æ°æ®åéå°æµè§å¨åï¼å¯¹æ°æ®è¿è¡éæ°ç¼ç æ¶ï¼ä½¿ç¨çå°±æ¯è¯¥ç¼ç ã å ¶æ¬¡ï¼è¦è¯´ä¸è¯´æµè§å¨æ¯æä¹æ ·å¯¹æ¥æ¶ååéçæ°æ®è¿è¡ç¼ç ç.
response.setCharacterEncoding("UTF-8")çä½ç¨æ¯æå®å¯¹æå¡å¨ååºè¿è¡éæ°ç¼ç çç¼ç ãåæ¶ï¼æµè§å¨ä¹æ¯æ ¹æ®è¿ä¸ªåæ°æ¥å¯¹å ¶æ¥æ¶å°çæ°æ®è¿è¡éæ°ç¼ç ï¼æè 称为解ç ï¼ãæ以å¨æ è®ºä½ å¨JSPä¸è®¾ç½®response.setCharacterEncoding ("UTF-8")æè response.setCharacterEncoding("GBK")ï¼æµè§å¨åè½æ£ç¡®æ¾ç¤ºä¸æï¼åææ¯ä½ åéå°æµè§å¨çæ°æ®ç¼ç æ¯æ£ç¡®çï¼æ¯å¦æ£ç¡®è®¾ç½®äºpageEncodingåæ°çï¼ã读è å¯ä»¥å个å®éªï¼å¨JSPä¸è®¾ç½® response.setCharacterEncoding("UTF-8")ï¼å¨IEä¸æ¾ç¤ºè¯¥é¡µé¢æ¶ï¼å¨IEçèåä¸éæ©"æ¥ç(V)"à "ç¼ç (D)"ä¸å¯ä»¥æ¥çå°æ¯" Unicodeï¼UTF-8ï¼"ï¼èå¨å¨JSPä¸è®¾ç½®response.setCharacterEncoding ("GBK")ï¼å¨IEä¸æ¾ç¤ºè¯¥é¡µé¢æ¶ï¼å¨IEçèåä¸éæ©"æ¥ç(V)"à "ç¼ç (D)"ä¸å¯ä»¥æ¥çå°æ¯"ç®ä½ä¸æï¼GB2312ï¼"ã
æµè§å¨å¨åéæ°æ®æ¶ï¼å¯¹URLååæ°ä¼è¿è¡URLç¼ç ï¼å¯¹åæ°ä¸çä¸æï¼æµè§å¨ä¹æ¯ä½¿ç¨response.setCharacterEncodingåæ°æ¥è¿è¡URLç¼ç çã以ç¾åº¦åGOOGLE为ä¾ï¼å¦æä½ å¨ç¾åº¦ä¸æç´¢"æ±å"ï¼ç¾åº¦ä¼å°å ¶ç¼ç 为"%BA%BA%D7%D6"ãèå¨GOOGLEä¸æç´¢ "æ±å"ï¼GOOGLEä¼å°å ¶ç¼ç 为"%E6%B1%89%E5%AD%97"ï¼è¿æ¯å 为ç¾åº¦ç response.setCharacterEncodingåæ°ä¸ºGBKï¼èGOOGLEçç response.setCharacterEncodingåæ°ä¸ºUTF-8ã
æµè§å¨å¨æ¥æ¶æå¡å¨æ°æ®ååéæ°æ®å°æå¡å¨æ¶æ使ç¨çç¼ç æ¯ç¸åçï¼é»è®¤æ åµä¸å为JSP页é¢çresponse.setCharacterEncodingåæ°ï¼æè contentTypeå pageEncodingåæ°ï¼ï¼æä»¬ç§°å ¶ä¸ºæµè§å¨ç¼ç ãå½ç¶ï¼å¨IEä¸å¯ä»¥ä¿®æ¹æµè§å¨ç¼ç ï¼å¨IEçèåä¸éæ©"æ¥ç(V)"à "ç¼ç (D)"ä¸ä¿®æ¹ï¼ï¼ä½é常æ åµä¸ï¼ä¿®æ¹è¯¥åæ°ä¼ä½¿åæ¬æ£ç¡®ç页é¢ä¸åºç°ä¹±ç ãä¸ä¸ªæ趣çä¾åæ¯ï¼å¨IEä¸æµè§GOOGLEç主页æ¶ï¼å°æµè§å¨ç¼ç ä¿®æ¹ä¸º"ç®ä½ä¸æï¼GB2312ï¼"ï¼æ¤æ¶ï¼é¡µé¢ä¸çä¸æä¼åæä¹±ç ï¼ä¸çå®ï¼å¨ææ¬æ¡ä¸è¾å ¥"æ±å"ï¼æ交ï¼GOOGLEä¼å°å ¶ç¼ç 为"%BA%BA%D7%D6"ï¼å¯è§ï¼æµè§å¨å¨å¯¹ä¸æè¿è¡URLç¼ç æ¶ï¼ä½¿ç¨çå°±æ¯æµè§å¨ç¼ç ã
å¼æ¸ äºæµè§å¨æ¯å¨æ¥æ¶ååéæ°æ®æ¶ï¼æ¯å¦ä½å¯¹æ°æ®è¿è¡ç¼ç çäºï¼æ们åæ¥ççæå¡å¨æ¯å¨æ¥æ¶ååéæ°æ®æ¶ï¼æ¯å¦ä½å¯¹æ°æ®è¿è¡ç¼ç çã
对äºåéæ°æ®ï¼æå¡å¨æç §response.setCharacterEncodingâcontentTypeâpageEncodingçä¼å 顺åºï¼å¯¹è¦åéçæ°æ®è¿è¡ç¼ç ã对äºæ¥æ¶æ°æ®ï¼è¦åä¸ç§æ åµãä¸ç§æ¯æµè§å¨ç´æ¥ç¨URLæ交çæ°æ®ï¼å¦å¤ä¸¤ç§æ¯ç¨è¡¨åçGETåPOSTæ¹å¼æ交çæ°æ®ãÂ
å 为åç§WEBæå¡å¨å¯¹è¿ä¸ç§æ¹å¼çå¤çä¹ä¸ç¸åï¼æ以æ们以Tomcat5.0为ä¾ã
æ 论使ç¨é£ç§æ¹å¼æ交ï¼å¦æåæ°ä¸å å«ä¸æï¼æµè§å¨é½ä¼ä½¿ç¨å½åæµè§å¨ç¼ç å¯¹å ¶è¿è¡URLç¼ç ã
对äºè¡¨åä¸POSTæ¹å¼æ交çæ°æ®ï¼åªè¦å¨æ¥æ¶æ°æ®çJSPä¸æ£ç¡®è®¾ç½®request.setCharacterEncodingåæ°ï¼å³å°å¯¹å®¢æ·ç«¯è¯·æ±è¿è¡éæ°ç¼ç çç¼ç 设置ææµè§å¨ç¼ç ï¼å°±å¯ä»¥ä¿è¯å¾å°çåæ°ç¼ç æ£ç¡®ãæå读è å¯è½ä¼é®ï¼é£å¦ä½å¾å°æµè§å¨ç¼ç å¢ï¼ä¸é¢æ们æè¿äºï¼å¨é»è®¤è¯·æ åµä¸ï¼æµè§å¨ç¼ç å°±æ¯ä½ å¨ååºè¯¥è¯·æ±çJSP页é¢ä¸response.setCharacterEncoding设置çå¼ãæ以对äºPOST表åæ交çæ°æ®ï¼å¨è·å¾æ°æ®çJSP页é¢ä¸request.setCharacterEncodingè¦åçææ交该表åçJSP页é¢ç response.setCharacterEncoding设置æç¸åçå¼ã
对äºURLæ交çæ°æ®å表åä¸GETæ¹å¼æ交çæ°æ®ï¼å¨æ¥æ¶æ°æ®çJSPä¸è®¾ç½®request.setCharacterEncodingåæ°æ¯ä¸è¡çï¼å 为å¨Tomcat5.0ä¸ï¼é»è®¤æ åµä¸ä½¿ç¨ISO- 8859-1对URLæ交çæ°æ®å表åä¸GETæ¹å¼æ交çæ°æ®è¿è¡éæ°ç¼ç ï¼è§£ç ï¼ï¼èä¸ä½¿ç¨è¯¥åæ°å¯¹URLæ交çæ°æ®å表åä¸GETæ¹å¼æ交çæ°æ®è¿è¡éæ°ç¼ç ï¼è§£ç ï¼ãè¦è§£å³è¯¥é®é¢ï¼åºè¯¥å¨Tomcatçé ç½®æ件çConnectoræ ç¾ä¸è®¾ç½®useBodyEncodingForURIæè URIEncodingå±æ§ï¼å ¶ä¸useBodyEncodingForURIåæ°è¡¨ç¤ºæ¯å¦ç¨request.setCharacterEncoding åæ°å¯¹URLæ交çæ°æ®å表åä¸GETæ¹å¼æ交çæ°æ®è¿è¡éæ°ç¼ç ï¼å¨é»è®¤æ åµä¸ï¼è¯¥åæ°ä¸ºfalseï¼Tomcat4.0ä¸è¯¥åæ°é»è®¤ä¸ºtrueï¼ï¼ URIEncodingåæ°æå®å¯¹ææGETæ¹å¼è¯·æ±ï¼å æ¬URLæ交çæ°æ®å表åä¸GETæ¹å¼æ交çæ°æ®ï¼è¿è¡ç»ä¸çéæ°ç¼ç ï¼è§£ç ï¼çç¼ç ã URIEncodingåuseBodyEncodingForURIåºå«æ¯ï¼URIEncodingæ¯å¯¹ææGETæ¹å¼ç请æ±çæ°æ®è¿è¡ç»ä¸çéæ°ç¼ç ï¼è§£ç ï¼ï¼èuseBodyEncodingForURIåæ¯æ ¹æ®ååºè¯¥è¯·æ±ç页é¢çrequest.setCharacterEncodingåæ°å¯¹æ°æ®è¿è¡çéæ°ç¼ç ï¼è§£ç ï¼ï¼ä¸åç页é¢å¯ä»¥æä¸åçéæ°ç¼ç ï¼è§£ç ï¼çç¼ç ãæ以对äºURLæ交çæ°æ®å表åä¸GETæ¹å¼æ交çæ°æ®ï¼å¯ä»¥ä¿®æ¹ URIEncodingåæ°ä¸ºæµè§å¨ç¼ç æè ä¿®æ¹useBodyEncodingForURI为trueï¼å¹¶ä¸å¨è·å¾æ°æ®çJSP页é¢ä¸ request.setCharacterEncodingåæ°è®¾ç½®ææµè§å¨ç¼ç ã