JavaScript¿¡ ÀÖ¾î¼ÀÇURLencodeÀÇ Ã³¸®
JavaScript¿¡
ÀÖ¾î¼ÀÇURLencodeÀÇ
ó¸®
ÀÌ ¸Þ¸ð´Â ,JavaScript¿¡ ÄíÅ°¸¦ ó¸®ÇÏ´Â °æ¿ìÀÇ Æ÷ÀÎÆ®¸¦ °¡¸®ÄÑ ,URLencode¿¡ °ü·ÃµÇ´Â Æ®·¯ºíÀ» ȸÇÇÇØ Áֽô °ÍÀ» ¸ñÀûÀ¸·Î ÇÏ°í ÀÖ½À´Ï´Ù. ±ÞÇÑ °Í(ºÐ)ÆíÀº3Àå°ú4¾ÆÅ°¶ó¸¦ ÆÄ°ßÇØ ÀÐ¾î ¹Þ¾Æ »ó°üÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ ÀÌ ¸Þ¸ð´Â °¡´ÉÇÑ ÇÑIE¿¡ ºÁ ÁÖ¼¼¿ä. ¸ñÂ÷ 3. 3¡¡JavaScript¿¡
ÀÖ¾î¼ÀÇescape()°úunescape()ÇÔ¼ö 4. 4¡¡JavaScript¿¡
ÀÖ¾î¼ÀÇencodeURI,decodeURI,encodeURIComponent,decodeURIComponent 5. 5¡¡±×·¯¸é µµ´ëü ¾î¶»°Ô Çϸé ÁÁÀº°¡? 6. 6¡¡UTF-8ÀÇURLencode·µðÄÚµå
ÇÔ¼öÀÇ ¿¹£º 7. 7¡¡JSP°úJavaScript°£ÀÇ ÄíÅ°¿¡ ÀÇÇÑ µ¥ÀÌÅÍ ±³È¯¿¹ |
HTMLÅؽºÆ® ÀÌ¿Ü¿¡ À¥·¼¹ö°¡ ºê¶ó¿ìÀú¿¡ Á¤º¸¸¦ °Ç³×ÁÖ´Â ¼ö´ÜÀº ,HTTPÀÀ´ä ¸Þ¼¼ÁöÀÇ Çì´õ ºÎºÐ¿¡ ±× Á¤º¸¸¦ ¼¼Æ® ÇÏ´Â °ÍÀÔ´Ï´Ù (º¸µð ºÎºÐ¿¡´Â Åë»óHTMLÅؽºÆ®°¡ µé¾î°©´Ï´Ù ). ¼¹öÃøÀ¸·ÎºÎÅÍ´Â ÄíÅ° ¼³Á¤ÀÇ Çì´õÇàÀ̳ª ½º½º·Î ¸¸µç Ưº°ÇÑ Çì´õÇà¿¡ Á¤º¸¸¦ ¼¼Æ® ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰͵éÀº (À̸§ , °ª) ÀÇ Æä¾îÀÇ Çü½ÄÀ» ÃëÇÕ´Ï´Ù.
HTMLÅؽºÆ®¿Ü¿¡¼ °Ç³×¹Þ´Â Á¤º¸´Â , ºê¶ó¿ìÀú ȸ鿡 Ç¥½ÃµÇÁö ¾Ê±â ¶§¹®¿¡ , Ç¥½ÃÀÇ ¸ñÀû ÀÌ¿ÜÀÇ ¼¼¼Ç °ü¸® µî¿¡ »ç¿ëµË´Ï´Ù. ¼ºê ·¿¿¡ ÀÖ¾î¼ÀÇ ÄíÅ°¿¡ ÀÇÇÑ ¼¼¼Ç À¯ÁöÀÇ ¸ÞÄ«´ÏÁòÀº , ¹Ù¾ßÈå·Î ÀÌ Æ¯¼ºÀ» ÀÌ¿ëÇÑ °ÍÀÔ´Ï´Ù. ¼¼¼Ç ÀÌ¿Ü¿¡µµ Ŭ¶óÀ̾ðÆ®¿ÍÀÇ °¢Á¾ °ü¸® Á¤º¸(ºê¶ó¿ìÀúÀÇ Å¸ÀÔÀ̳ª ¹öÁ¯ , À¯Àú Á¤º¸ µî ) , ¾Ïȣȸ¦ À§ÇÑ Á¤º¸(¿¼è³ª ¹æ½Äµî ) ÀÇ ±³½ÅÀ̶ó°í ÇÏ´Â ÀÀ¿ëµµ »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í º¸³½ ÄíÅ°´Â Ŭ¶óÀ̾ðÆ®¿¡ ÃàÀûµÇ¹Ç·Î , ¹Ýº¹ Ç¥½Ã³ª ȸ鿡 °øÅëÀÇ Á¤º¸¸¦ ÃÖÃÊ·Î ÄíÅ°·Î º¸³» ¹ö¸®´Â Àϵµ °¡´ÉÇÕ´Ï´Ù. ±×¸®°í , Æû¿¡ Ç¥½ÃÇÏÁö ¾Ê°í ÇÊ¿äÇÑ Á¤º¸¸¦ ¼¹ö¿¡ µ¹·ÁÁÙ ¼öµµ ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾îTomcatµîÀÇ ¼ºê ·¿·¿£ÁøÀÌ ¼¼¼Ç À¯Áö¿¡ »ç¿ëÇÏ°í ÀÖ´Â(¡°jsessionid¡±, ID)ÀÇ Á¾·ùÀÇ ¸ÞÄ«´ÏÁò ÀÌ¿Ü¿¡ , Á» ´õ »ó¼¼ÇÏ°Ô ±× ¼¼¼ÇÀÇ Á¤º¸(À¯ÀúÀÇ À̸§µî ) ¸¦ Ŭ¶óÀ̾ðÆ®·Î À¯ÁöÇØ , ÇÊ¿äÇÏ°Ô ÀÀÇÏ°í ÀÌ°ÍÀ» Ç¥½ÃÇÏ´Â µîÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù.
JavaScript¿¡ À־ ,HTTPÀÀ´ä ¸Þ¼¼ÁöÀÇ Çì´õÇàÀ» Á÷Á¢ ²¨³»´Â ±â´ÉÀº À¯°¨½º·´Áö¸¸ ¾ø½À´Ï´Ù. ±×·¸Áö¸¸Window.document.cookie¿ÀºêÁ§Æ®¸¦ »ç¿ëÇØ , ÄíÅ°¸¦ °³ÀÔ½ÃŲ Á¤º¸ÀÇ ±³È¯ÀÌ °¡´ÉÇÕ´Ï´Ù. ±×·¸Áö¸¸ , Èļú°ú °°ÀÌHTTP¸Þ¼¼ÁöÀÇ Çì´õÇàÀºURLencode µÇÁö ¾Ê½À´Ï´Ù. ASCIIij¸¯ÅÍ ¼¼Æ®¸¸À¸·Î ³¡³ª´Â ±¸¹Ì¿Í ´Þ¸® ¿ì¸®¿Í °°ÀÌ2¾Æ¸£¹ÙÀÌÆ®ÀÇ Ä³¸¯ÅÍ ¼¼Æ®¸¦ Ç¥ÁØÀûÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì´Â ,URLencode¿¡ ÁÖÀÇÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¿©·¯ºÐÀÌ °í¹ÎÇØ ±×¸®°í ¹®Á¦¸¦ ÀÏÀ¸Å°±â ½¬¿î °ÍÀº ÀÌ Á¡ÀÌÁö¿ä.
ÀÌ ¸Þ¸ð´Â ,JavaScript±×¸®°í ÄíÅ°¸¦ ó¸®ÇÏ´Â °æ¿ìÀÇ Æ÷ÀÎÆ®¸¦ °¡¸®ÄÑ ,URLencode¿¡ °ü·ÃµÇ´Â Æ®·¯ºíÀ» ȸÇÇÇØ Áֽô °ÍÀ» ¸ñÀûÀ¸·Î ÇÏ°í ÀÖ½À´Ï´Ù.
1. ÄíÅ°¿ÍURLÀÎÄÚµù
ÄíÅ°¿ÍURLÀÎÄÚµùÀÇ ±âº»ÀûÀÎ Áö½ÄÀÌ ÇÊ¿äÇÏ°Ô µÇ±â ¶§¹®¿¡ , ÃÖÃÊ·Î ±× Æ÷ÀÎÆ®¸¦ ½Ç·Ê·Î °¡¸®Å°°Ú½À´Ï´Ù. |
Åë»ócookieÀº ¾îÇø®ÄÉÀ̼Ƿ¼¹ö°¡HTTPÀÀ´äÀÇ ÆÐŶÀÇ Çì´õ ºÎºÐ¿¡ ¼¼Æ® ÇØ ºê¶ó¿ìÀú¿¡ °Ç³×ÁÝ´Ï´Ù. ¿¹¸¦ µé¸éIBMÀÇ ¼ºê ·¿·¿£ÁøÀº ´ÙÀ½°ú °°ÀºHTTPÀÇ Çì´õÇàÀ»HTTPÀÀ´ä¿¡ ºÙ¿© ¼¼¼Ç(¼ºñ½º¿Í Ŭ¶óÀ̾ðÆ®¿ÍÀÇ ´ëÀÀÀÇ ½Äº°) ÀÇ À¯Áö¸¦ À̶ó°í ±ò¶§±â ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ ¿¹() ¿¡¼´ÂsessionidÀ̶ó°í ÇÏ´Â ¡¸À̸§¡¹ÀÇ º¯¼ö¿ÍLV··µÇ´Â ¡¸°ª¡¹ÀÇ Á¶¸¦ °Ç³×ÁÖ°í ÀÖ½À´Ï´Ù.
Set-Cookie:
sessionid=LV140HYAAAABZQ....;Path=/ |
ÀÌ¿Í °°ÀÌcookieÀºHTTPÆÐŶÀÇ Çì´õÇà¿¡ ÀÇÇØ Àü´ÞµÇ¹Ç·Î ,2¾Æ¸£¹ÙÀÌÆ® ¹®ÀÚ³ª¡±;¡±À̳ª¡±=¡±µîÀÌ À§ÇèÇÑ (ÇÁ·ÎÅäÄÝ »óÀǹ̸¦ °¡Áø´Ù ) ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ ¡¸À̸§¡¹À̳ª ¡¸°ª¡¹À» °¡Áö´ÂcookieÀ» Ŭ¶óÀ̾ðÆ®¿¡ °Ç³×ÁÙ ¶§´Â , À§ÇèÇÑ ¾Æ¸£¹ÙÀÌÆ® ¹®ÀÚ¸¦ Æ÷ÇÔÇÏÁö ¾Ê°ÔURLencode ÇØ , ¾Æ¸£¹ÙÀÌÆ®¿·Î¼ Àü´ÞÇÏÁö ¾ÊÀ¸¸é µÇÁö ¾Ê½À´Ï´Ù.
¸ÖƼ ¾Æ¸£¹ÙÀÌÆ® ¹®ÀÚ¸¦ ¼ºê ·¿·¿£ÁøÀº °ú¿¬ ÀÌ°ÍÀ» ÀνÄÇØ ÀÚµ¿ÀûÀ¸·ÎURLencode ÇØ ÁÖ´Â °ÍÀÏ±î ½ÇÇèÇØ º¾½Ã´Ù.
´ÙÀ½ÀÇ ¼ºê ·¿Àº ³Ý»ó(http://ash.jp/java/hellocookie.htm)¿¡¼ °ø°³µÇ°í ÀÖ´ø ÇÁ·Î±×·¥¿¡ ÀϺΠ¼Õº» °ÍÀÔ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¼ºê ·¿¿¡ ÀÖ¾î¼ÀÇ ÄíÅ° 󸮿¡ °üÇÑ ÈùÆ®°¡ µé¾î°¡ Àֱ⠶§¹®¿¡ , ´ëÃæ ÀÌÇØÇØ ÁÖ¼¼¿ä.
import
java.io.*; import
java.net.*; import
javax.servlet.*; import
javax.servlet.http.*; /** ÄíÅ°
ÀÐ°í ¾²±â ¼ºê ·¿ **/ public
class HelloCookie0 extends HttpServlet { public void doGet (HttpServletRequest req,
HttpServletResponse res) throws ServletException, IOException
{ PrintWriter out; Cookie[] cookies; Cookie cookie; // CookieÀÇ Ãëµæ cookies =
req.getCookies(); cookie = null; if (cookies != null){ for(int i=0; i < cookies.length; i++)
{ cookie =
cookies[i]; if
(cookie.getName().equals("HelloCookie")) { break; } } } res.setContentType("text/html;
charset=Shift_JIS"); out =
res.getWriter(); HttpSession session =
req.getSession(); // SessionÀÇ Ãëµæ°ú
±âÀÔÇØ session.setMaxInactiveInterval(600); // 10ºÐ°£ À¯È¿ if (session.isNew()) { // CookieÀÇ ±â·Ï cookie = new Cookie("HelloCookie", "Hello
World!"); cookie.setMaxAge(60); // À¯È¿±â°£Àº1ºÐ ¿¡ ²÷¾îÁö´Â
res.addCookie(cookie);
out.println("<html><body>"); out.println("<h1>Write
Cookie</h1>"); out.println("<p>¸®·Îµå ÇØ ÁÖ¼¼¿ä.
</p>");
out.println("</body></html>"); } else { // CookieÀÇ Ç¥½Ã
out.println("<html><body>");
out.println("<h1>"); for(int i=0; i < cookies.length; i++)
{ cookie =
cookies[i]; out.println(cookie.getName()+" : "+ new
String(cookie.getValue().getBytes("8859_1"),
"Shift_JIS"));
out.println("<BR>"); }
out.println("</h1>"); out.println("<p>CookieÀÇ
»ùÇÃ(HelloCookie0.java)</p>");
out.println("</body></html>"); } } } |
ÀÌ ÇÁ·Î±×·¥À¸·Îcookie = new Cookie("HelloCookie", "Hello World!");À̶ó°í ÇÏ´Â ÇàÀÇ ¡¸°ª¡¹ÀÇ Ä³¸¯ÅÍ ¶óÀο¡ ÇÑÀÚ³ª À§ÇèÇÑ ¹®ÀÚ¸¦ ¼³Á¤Çϸé(ÀÚ) ¼ºê ·¿·¿£ÁøÀº ¾î¶°ÇÑ ÀÀ´ä ÆÐŶÀ» ¼Û½ÅÇÒ±î ½ÃÇèÇØ º¾½Ã´Ù.
a) ¡±Hello ÀϺ»!¡±°ú ¹Ù²Ù¾îtelnetÀÇ ¼ÒÇÁÆ®¿þ¾î·Î ¾×¼¼½º Çϸé(ÀÚ) ´ÙÀ½°ú °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ÃÖÃÊÀÇ2Çà(°ø¹éÇ൵ Æ÷ÇÔÇÑ´Ù ) ÀºtelnetÀÌ º¸³½HTTP¿ä±¸ ¸Þ¼¼ÁöÀÔ´Ï´Ù. ±× ÀÌÈÄ°¡ ¼ºê ·¿·¿£Áø(¿©±â¿¡¼´ÂTomcat) ÀÌ µ¹·ÁÁØHTTPÀÀ´ä ¸Þ¼¼ÁöÀÔ´Ï´Ù. Àü¹ÝÀÌ Çì´õ ºÎºÐ , ¸¶Áö¸·4ÇàÀÌ º¸µð ºÎºÐÀÔ´Ï´Ù. ±×·±µ¥HTTPÀÀ´äÀÇ Çì´õ ºÎºÐÀ» º¸¸é(ÀÚ) ,Set-CookieµÇ´Â Çì´õÇàÀÌ2Çà Á¸ÀçÇÏ´Â °ÍÀÌ ºÐ ºô¸®°íÁö¿ä. óÀ½Àº ¼ºê ·¿ÀÌ ÀÛ¼ºÇÑ °ÍÀ¸·Î , ÈÄ ÀÇ °ÍÀº ¼ºê ·¿·¿£ÁøÀÌ ¼¼¼Ç À¯Áö¸¦ À§ÇØ ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù. µû¶ó¼ , ºê¶ó¿ìÀú·Î ÇØ º¸¸é ,2°³ÀÇ ÄíÅ°°¡ °Ç³×¹Þ¾Ò´Ù°í ÇÏ´Â °ÍÀÌ µË´Ï´Ù. ºê¶ó¿ìÀúÃø¿¡¼ ÀÌ·¯ÇÑ ÄíÅ°¿¡ ±»ÀÌ º¯°æÀ» ´õÇÏÁö ¾ÊÀ¸¸é , ¼ºê ¹ÌÆ®·¹öÆ°µîÀ¸·Î ÀÌURLÀ» ÀçÂ÷ ¾×¼¼½º ÇßÀ» ¶§¿¡´Â , ÀÌ·¯ÇÑ ÄíÅ°´Â À¯È¿±â°£ÀÌ ²÷¾îÁöÁö ¾ÊÀ¸¸é ±×´ë·Î ¼¹ö¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù.
GET
/examples/servlet/HelloCookie0 HTTP/1.0 HTTP/1.1
200 OK Content-Type:
text/html; charset=Shift_JIS Connection:
close Date:
Wed, 30 Oct 2002 03:45:24 GMT Server:
Apache Tomcat/4.0.4-b3 (HTTP/1.1 Connector) Set-Cookie:
HelloCookie=Hello ÀϺ»!;Expires=Wed, 30-Oct-2002 03:50:25
GMT Set-Cookie:
JSESSIONID=BAFB93DD6C7848751C369747B316DB6C;Path=/examples <html><body> <h1>Write
Cookie</h1> <p>¸®·Îµå
ÇØ ÁÖ¼¼¿ä. </p> </body></html> |
b) ±×·±µ¥ ÀÌHTTPÀÀ´ä ¸Þ¼¼Áö¸¦ º¸¸é(ÀÚ) ,telnetÀÇ ´ëÀÀ¹®ÀÚ ¼¼Æ®¸¦Shift_JISÀ¸·Î ÇßÀ¸¹Ç·Î , ¡°Hello ÀϺ»!¡±ÀÇ ºÎºÐÀº ¹®ÀÚ°¡ º¯ÇÏ°í¸¦ ÀÏÀ¸Å°Áö ¸»°í ¿Ã¹Ù¸£°Ô ÀоÁö°í ÀÖ½À´Ï´Ù. ±×¸®°í ,IE(v6)¿¡http://localhost:8080/examples/servlet/HelloCookie0°ú ¾×¼¼½º ÇØ , ¿©·¯ºÐÀÇPCÀÇC:\WINDOWS\CookiesÀ» Á¶»çÇϸé(ÀÚ) , ÀÌ ÄíÅ°°¡ ¹®ÀÚ°¡ ±úÁöÁö ¾Ê°í ¼ö¸®µÇ°í ÀÖ´Â °ÍÀÌ È®ÀÎÇÒ ¼ö ÀÖ°ÚÁö¿ä. ±×·¸Áö¸¸ , ½ÇÀº ÀÌ°ÍÀº , ¿ì¿¬È÷ ÀߵǾú´Ù°í ÇÒ »Ó(¸¸Å)ÀÎ °ÍÀÔ´Ï´Ù. ¡±ÀϺ»¡±À̶ó°í ÇÏ´Â ¹®ÀÚ´ÂShift_JISÀ¸·Î¼ Çì´õ¿¡ µé¾î°¡ ÀÖ½À´Ï´Ù¸¸ , ÀÌ ¾Æ¸£¹ÙÀÌÆ®¿ÀÇ ¾î´À ¾Æ¸£¹ÙÀÌÆ®µµASCIIÀÇ ¡¸À§ÇèÇÑ ¹®ÀÚ¡¹¿¡ ¶³¾îÁöÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ´õ¿í , ÀÌ ½ÇÇè¿¡¼´Â ·ÎÄÃÀÇ È£½ºÆ®¸¦ »ç¿ëÇÏ°í ÀÖ¾î ³×Æ®¿öÅ©¸¦ °³ÀÔ½ÃÅ°°í´Â ÀÖÁö ¾Ê½À´Ï´Ù. ³×Æ®¿öÅ©ÀÇ ³ëµå¿¡ µû¶ó¼´Â (³°Àº ½Ã½ºÅÛÀÔ´Ï´Ù¸¸ )7ºñÆ® ¹Û¿¡ Àü¼ÛµÇÁö ¾Ê°í , ÃÖ»óÁ¤µµÀÇ1ºñÆ®(MSB)Àº À߸øÇØ °ËÃâÀ̳ª µ¿±âµîÀÇ ¸ñÀûÀ¸·Î »ç¿ëµÇ°í ÀÖ´Â °Íµµ ÀÖ½À´Ï´Ù. ±×·¯ÇÑ ³ëµå¸¦ ÀÌHTTP¸Þ¼¼Áö°¡ Åë°úÇϸé(ÀÚ) , ´ç¿¬È÷ ¹®ÀÚ°¡ º¯ÇÏ°í¸¦ ÀÏÀ¸ÄÑ ¹ö¸³´Ï´Ù.
c) À§ÇèÇÑ ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ Ä³¸¯ÅÍ ¶óÀÎÀÌ ÄíÅ°ÀÇ ¡¸°ª¡¹ÀÇ Àå¼Ò¿¡ ¼¼Æ® µÇ¸é ¾î¶»°Ô µÉ±î¿ä? ÄíÅ°ÀÇ ¡¸À̸§¡¹¿¡ À§ÇèÇÑ1¾Æ¸£¹ÙÀÌÆ® ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖÀ¸¸é(ÀÚ) ¼ºê ·¿·¿£ÁøÀº ¿¹¿Ü¸¦ ÀÏÀ¸Å°µµ·Ï(µíÀÌ) ±ÔÁ¤µÇ°í ÀÖ½À´Ï´Ù¸¸ , ¡¸°ª¡¹¿¡´Â ±×·¯ÇÑ Á¦¾àÀÌ ¾î¶² (¶æ)ÀÌÀ¯ÀÏ±î ±ÔÁ¤µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù. ½ÃÇè»ï¾Æ¡± AAA ;B%BB¡±°ú ½ºÆäÀ̽º¿Í ¼¼¹ÌÄÝ·ÐÀ» Æ÷ÇÔÇÑ ¹®ÀÚ¸¦ Ãâ·ÂÇØ º¸ÀÚ. telnet¿¡ ÀÌ ¼ºê ·¿À» È£ÃâÇØ º¸¸é(ÀÚ) ´ÙÀ½°ú °°ÀºHTTPÀÀ´ä ÆÐŶÀ» °üÂûÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
HTTP/1.1
200 OK Content-Type:
text/html; charset=Shift_JIS Connection:
close Date:
Tue, 22 Oct 2002 04:39:25 GMT Server:
Apache Tomcat/4.0.4-b3 (HTTP/1.1 Connector) Set-Cookie:
HelloCookie=Hello AAA;B%BB;Expires=Tue, 22-Oct-2002 04:44:26
GMT ÀÌÇÏ »ý·« |
ÀÌ°ÍÀ»
ºê¶ó¿ìÀú(IE6)Àº
¾î¶»°Ô ¼öÁß¿¡ ³Ö¾ú´ÂÁö¸¦Explorer¿¡
º¸¸é(ÀÚ)C:\WINDOWS\CookiesÀÇ
µð·ºÅ丮¿¡ ±â·ÏµÇ°í ÀÖ´Â ÆÄÀÏÀº ´ÙÀ½°ú °°Àº ÅؽºÆ®°¡ µÇ¾î ÀÖ½À´Ï´Ù. Áï ½ºÆäÀ̽º´Â ¹Þ¾Æµé¿´Áö¸¸ ¼¼¹ÌÄÝ·Ð ÀÌÈÄ´Â ÄíÅ°·Î¼´Â ¹Þ¾ÆµéÀÌÁö´Â
¾Ê½À´Ï´Ù. ¼¼¹ÌÄÝ·ÐÀº ÀÎÅͳÝÀÇ ¼¼°è¿¡¼´Â ¡¸´Ü¶ô ¹®ÀÚ¡¹ÀÎ °ÍÀÔ´Ï´Ù.
HelloCookie AAA localhost/examples/servlet/ 1024 1088345728 29522332 2383813024 29522331 * |
´ÙÀ½ÀÇ ÀåÀ¸·Î ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÕ´Ï´Ù¸¸ ,URLÀÎÄÚµùÀºMSBÀÌ1ÀÇ ¾Æ¸£¹ÙÀÌÆ®³ª , ÀÎÅͳݻ󿡼 Ưº°ÇÑ Àǹ̸¦ °¡Áö´Â7ºñÆ®ASCII¹®ÀÚ¸¦ ,7ºñÆ®ASCII¹®ÀÚ¸¦ »ç¿ëÇØ È¥¶õ½ÃÅ°Áö ¾Ê°í º¸³»±â À§ÇÑ ±¸Á¶ÀÎ °ÍÀÔ´Ï´Ù.
Áö±Ý±îÁöÀÇ ½ÇÇèÀ¸·ÎºÎÅÍ ºÐ µ¡¾ø´Â ¼¼»ó °Ô ,ÄíÅ°ÀÇ ¼Û½Å¿¡ ÇØ´çÇØ À̸§ , °ª°úµµURLencode ÇØ º¸³»´Â °ÍÀÌ Ãßõ µË´Ï´Ù. ÀÌ°ÍÀºNetScape»çÀÇ Çؼ³¼¿¡¼µµ Ãßõ µÇ°í ÀÖ´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ¼ºê ·¿·¿£ÁøÀÌ ¼¼¼Ç À¯Áö¸¦ À§ÇØcookieÀ» ¼¼Æ® ÇÒ ¶§´ÂURLencode ÇÏ°í ÀÖÁö´Â ¾ÊÀº , À̶ó°í ÇÒ±îURLencodeÀÇ ÇÊ¿ä°¡ ¾ø´Â ¹®ÀÚ ¹Û¿¡ »ç¿ëÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù (URLº¯È¯Çصµ ¾î¶² º¯Èµµ »ý±âÁö ¾Ê½À´Ï´Ù ). telnetµîÀ¸·Î °Ë»çÇϱ⠽¬¿î (¾Æ¸£¹ÙÀÌÆ®ÀΠä¿¡¼µµ ¡¸À̸§¡¹ÀÌ ±×´ë·Î ÀÐÀ» ¼ö ÀÖ´Ù ) µí ,¡¸À̸§¡¹ÀºURLencode¿¡ °É¸®Áö ¾Ê´Â ¿µ¼öÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ¸·Î ÇÏ´Â °ÍÀÌ Æ®·¯ºí ¹æÁö°¡ µÇ°ÚÁö¿ä.
±×·±µ¥ , ´ÙÀ½°ú °°ÀÌ À̸§°ú °ª ½Ö¹æÀ»JavaÀÇURLEncoder¿¡ encode ÇØ ¸¸µç ÄíÅ°´Â ¾î¶»°Ô ºê¶ó¿ìÀú°¡ ó¸®ÇÒ±î Á¶»çÇØ º¾½Ã´Ù.
String namestring = "³»°¢ÃѸ®´ë½Å"; String valuestring = "ÄÚÀÌÁî¹Ì
ÁëÀÌÄ¡·Î"; namestring =
URLEncoder.encode(namestring, "Shift_JIS"); valuestring =
URLEncoder.encode(valuestring, "Shift_JIS"); cookie = new Cookie(namestring, valuestring); |
±×·¸´Ù¸é ,c:\windows\cookiesÀÇ ÆÄÀÏÀ» Á¶»çÇØ º¸¸é ´ÙÀ½°ú °°ÀÌ ºê¶ó¿ìÀú´ÂURLencode µÈ ij¸¯ÅÍ ¶óÀÎÀ» ±×´ë·Î ¹Þ°í ÀÖÀ» »ÓÀ̶ó°í ¸»ÇÏ´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» ¹ÙÅÁÀ¸·Î µÇµ¹¸®´Â °ÍÀº ÇÁ·Î±×·¡¸ÓÀÇ Ã¥ÀÓÀ̶ó°í ÇÏ´Â °ÍÀÔ´Ï´Ù.
%93%E0%8A%74%91%8D%97%9D%91%E5%90%62 %8F%AC%90%F2%8F%83%88%EA%98%59 localhost/examples/servlet/ 1024 3287822464 29522316 294622464 29522316 * |
ÁïNetscapeÀÇ »ý°¢Àº ,¡¸ÄíÅ°´Â1¾Æ¸£¹ÙÀÌÆ® ¹®ÀÚ·Î , ÇÑÆí ¾ÈÀüÇÑ ¹®ÀÚ·Î ±¸¼ºµÈ ij¸¯ÅÍ ¶óÀÎÀÌ À̸§°ú °ªÀÇ Æä¾î·Î¼ Á¸ÀçÇÏ°í ÀÖ´Â °ÍÀ» ÀüÁ¦·Î ÇÏ°í ÀÖ´Ù. ±×·¸Áö ¾ÊÀº ij¸¯ÅÍ ¶óÀÎÀ» ±×·¯ÇÑ Á¦¾à¿¡ µû¶ó º¯È¯ÇØ »ç¿ëÇÏ´Â °ÍÀº ÇÁ·Î±×·¡¸ÓÀÇ Ã¥ÀÓÀÌ´Ù¡¹À̶ó´Â °ÍÀÌÁö¿ä.
2. URLÀÎÄÚµù°ú´Â
¾î¶°ÇÑ ¾Æ¸£¹ÙÀÌÆ®¿¿¡¼µµ7ºñÆ®¸¸ÀÇASCII¹®ÀÚ¸¦ »ç¿ëÇØ ÀÎÅͳÝÀÇ ±×¹°À» Åë°ú½ÃÅ°±â À§ÇÑ ±¸Á¶·Î¼ÀÇURLÀÎÄÚµù , ȤÀº ±× ¿ªÀÇURLµðÄÚµù¿¡ ´ëÇØ Á» ´õ »ó¼¼ÇÏ°Ô ÀÌÇØÇϱâ·Î ÇÏ°Ú½À´Ï´Ù. |
¸ÞÀÏ(SMTP)À̳ªHTTPµîÀÇ ÆÐŶÀº , Çì´õºÎ¿¡ Ç༱Áö³ª ±× ¿Ü ¸Þ¼¼ÁöÀÇ Á¦¾î¿¡ °ü·ÃµÇ´Â Á¤º¸°¡ ½Ç¸³´Ï´Ù. ÀÌ Çì´õ´Â µµÁß ÀÇ (Çì´õ°¡ Çؼ®µÈ´Ù ) °ÔÀÌÆ® ¿þÀ̸¦ ¸îÀ̳ª Áß°èµÇ¾î ±¸¼®¿¡¼ ±¸¼®ÀÇ ³ëµå¿¡ Àü´ÞµÇ¹Ç·Î , ÀÌ·¯ÇÑ ³ëµå¿¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ÄÚµå¿Í ¹®ÀڷΠǥÇöµÇÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Çì´õºÎ¿¡ ÀϺ»¾î¿Í °°Àº2¾Æ¸£¹ÙÀÌÆ®ÀÇ ¹®ÀÚ°¡ µé¾î°¡¸é(ÀÚ) , ³ëµå´Â ÀÌ°ÍÀ»1¾Æ¸£¹ÙÀÌÆ®¾¿ Çؼ®ÇÏ·Á°í ÇÕ´Ï´Ù. ±× ¶§¿¡ ±× ¾Æ¸£¹ÙÀÌÆ®ÀÇ ¾î¶² °ÍÀΰ¡°¡ ³ëµå¿¡ ÀÖ¾î Ưº°ÇÑ Àǹ̸¦ °¡Áö´Â ¾Æ¸£¹ÙÀÌÆ®À̸é(ÀÚ) , ¿Ã¹Ù¸¥ °á°ú ¸¦ ¾òÀ» ¼ö ¾ø°Ô µÇ¾î ¹ö¸³´Ï´Ù. ´õ¿í ³×Æ®¿öÅ©¿¡ µû¶ó¼´Â °¢ ¾Æ¸£¹ÙÀÌÆ®ÀÇ ¸Ç À§ÀÇ ºñÆ®(MSB)À» °áÇÌ ½ÃÅ°´Â Àü¼Û ³ëµå°¡ Á¸ÀçÇÕ´Ï´Ù. µû¶ó¼ ¾î¶°ÇÑ ¹®ÀÚ¿©µµ ±×·¯ÇÑ Á¦¾à ¼Ó¿¡¼ ¾ÈÀüÇÏ°Ô ÇÑÆí Åõ°úÀûÀ¸·Î Àü¼ÛµÇ´Â °ÍÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î´Â7ºñÆ®·Î ÇÑÆí ¡¸¾ÈÀüÇÑ¡¹ASCII(American Standard Code for Information Interchange)ij¸¯ÅÍ ¼¼Æ®·ÎºÎÅÍ µÇ´Â ij¸¯ÅÍ ¶óÀÎÀ¸·Î º¯È¯ÇØ ÀÎÅͳÝÀ» ÅëÇÑ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯ÇÑ ±¸Á¶·Î¼URLencode°¡ »ý°¢µÇ¾ú½À´Ï´Ù. URLencode¶ó°í ÇÏ´Â °ÍÀº , ¿ø·¡ Çì´õºÎÀÇURLºÎºÐ¿¡2¾Æ¸£¹ÙÀÌÆ® ¹®ÀÚ³ª Á¦¾î ¹®ÀÚ¿Í È¥µ¿Çϱ⠽¬¿î ¹®ÀÚ°¡ µé¾î°¡´Â °ÍÀ» ¹æÁöÇϱâ À§Çؼ »ý°¢µÇ¾ú±â ¶§¹®¿¡ ±×·¸°Ô ºÒ¸®°í ÀÖ½À´Ï´Ù. ±×·¯³ª º¸³»Áö´Â Á¤º¸¸¦ ¸ðµÎ ¡¸º¸Àδ١¹Ä³¸¯ÅÍ ¶óÀÎÀ¸·Î º¯È¯ÇÏ´Â °ÍÀº ÇüÆíÀÌ ÁÁÀº ÀÏÀÌ ¸¹¾Æ , ¸Þ¼¼ÁöÀÇ º¸µð ºÎºÐÀÇ Àü´Þ¿¡µµ »ç¿ëµË´Ï´Ù. º¸µð ºÎºÐÀÇ º¯È¯¿¡´Â ¶Ç ÇϳªMIME(Multi-Purpose Internet Mail Extensions)ÀÇ ÀÎÄÚµùÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº2¾Æ¸£¹ÙÀÌÆ®ÀÇ ¹ÙÀ̳ʸ®·µ¥ÀÌÅ͸¦3¾Æ¸£¹ÙÀÌÆ®ÀÇ7ºñÆ®ASCII¹®ÀÚ·Î º¯È¯ÇÏ´Â °ÍÀ¸·Î , ¸ÖƼ¹Ìµð¾î Á¤º¸ÀÇ Àü¼Û¿¡ »ç¿ëµË´Ï´Ù.
URLencodeÀÇ ¼ø¼´Â ÀÌÇÏ °°½À´Ï´Ù.
¨ç ÀϺ»¾î¿Í °°ÀÌ2¾Æ¸£¹ÙÀÌÆ®ÀÇ ¹®ÀÚ´Â1¾Æ¸£¹ÙÀÌÆ®¸¶´Ù ²¨³»ASCII¹®ÀÚ·Î °£ÁÖÇØ ÀÌÇÏÀÇ º¯È¯À» ½Ç½ÃÇÑ´Ù. ¨è À̸§°ú °ª¿¡ ÀÖ´Â ¡¸¾ÈÀüÇÏÁö ¾Ê´Ù¡¹¹®ÀÚ´Â"%xx"À̶ó°í ÇÏ´Â À̽ºÄÉÀÌÇÁ ij¸¯ÅÍ ¶óÀÎÀ¸·Î º¯È¯ÇÑ´Ù. "xx"Àº ±× ¹®ÀÚÀÇASCIIÄ¡¸¦16Áø Ç¥½ÃÇÑ °ÍÀÌ´Ù. ¡¸¾ÈÀüÇÏÁö ¾Ê´Ù¡¹¹®ÀÚ¿¡´Â=, &, %, +À̳ª ÇÁ¸°Æ® ÇÒ ¼ö ¾ø´Â ¹®ÀÚ,MSB(ÃÖ»óÁ¤µµ ºñÆ®) (ÀÌ)°¡1ÀÇ ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ´Ù. ¨é ¸ðµçASCIIÀÇ ½ºÆäÀ̽º ¹®ÀÚ¸¦+À¸·Î º¯È¯ÇÑ´Ù. ¨ê À̸§°ú °ªÀ»=°ú&¿¡ À̾î ÇϳªÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ¸·Î ÇÑ´Ù. ¿¹¸¦ µé¸éname1=value1&name2=value2&name3=value3 |
ÀÌ Ä³¸¯ÅÍ ¶óÀÎÀÌPOST¿ä±¸ ¸Þ¼¼ÁöÀÇ º¸µð ºÎºÐ , ȤÀºGET¿ä±¸ÀÇ Äí¿¡¸® ij¸¯ÅÍ ¶óÀÎ , ȤÀº ÄíÅ°ÀÇ Çì´õÇàÀ¸·Î¼´Â ° ºÕºñ¾îÁý´Ï´Ù.
3. JavaScript¿¡ ÀÖ¾î¼ÀÇescape()°úunescape()ÇÔ¼ö
µåµð¾î Ŭ¶óÀ̾ðÆ®(ºê¶ó¿ìÀú) ÂÊ ¿¡ À̾߱⸦ ¿Å±é½Ã´Ù. JavaScriptÀ¸·Î´Â ´çÃÊ´Âescape()°úunescape()ÀÇ ±Û·Î¹ú ÇÔ¼ö°¡ ±×·¯ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµÇ´Â ÀÏÀÌ ÀÖ¾ú½À´Ï´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ÇÔ¼ö´Â ¿ÏÀüÇÑURLencode ´ëÀÀÀÌ ¾Æ´Ñ µ¥´Ù°¡ , ±× ÇÔ¼öÀÇ Á¤ÀÇ°¡ µµÁß¿¡ ¹Ù²î¾î ¹ö·Á , ÃßõÇÒ ¼ö ¾ø½À´Ï´Ù. |
±×·¸´Ù¸éJavaScript¿¡ ÄíÅ°¸¦ Àо ¶§ ,URLencode µÈ ÄíÅ°¸¦ ¾î´À ij¸¯ÅÍ ¼¼Æ®¶ó°í ÀÌÇØÇØ µðÄÚµåÇÏ´Â °ÍÀϱî¿ä? Java¿¡ À־URLEncoder°úURLDecoderÀÇ µÎ °³ÀÇ Å¬·¡½º¿¡ ÀÖ¾î ij¸¯ÅÍ ¼¼Æ®(°Ô´Ù°¡W3CÀÌ ±Ç°íÇÏ°í ÀÖ´Ù°í ÇصµUTF-8À» Ãßõ!) ¸¦ ÁöÁ¤ÇÏ°Ô µÇ¾ú´ø °ÍÀÌ ÃÖ±ÙÀÇ ÀÏ (j2sdk1.4ºÎÅÍ ) ÀÎ °ÍÀÔ´Ï´Ù.
JavaScriptÀÇ ¾ð¾î »ç¾ç(escape/unescape)¿¡´Â ±×·¯ÇÑ ±â´ÉÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °ÍÀÌ È¥¶õÀÇ Åä´ë°¡ µÇ°í ÀÖ´Â °Í °°½À´Ï´Ù. ¿¹¸¦ µé¸éescape()¸Þ¼Òµå´ÂNN(Netscape Navigator)ÀºShift_JISÀÇ Äڵ带URLencode³ª¹«·Î ,IE(Internet Explorer)Àº Unicode Ç¥±â(À̽ºÄÉÀÌÇÁ·¼ø¼À̸çUTFÀº ¾Æ´Ï´Ù! ) (À»)¸¦ µ¹·ÁÁÖ¾î ¹ö¸³´Ï´Ù. ¿ªÁ¶ÀÛÀÇescape()¸Þ¼Òµåµµ ÀÌ°Í¿¡ ´ëÀÀÇÕ´Ï´Ù. ±×·±µ¥ ¹®Á¦¸¦ ´õ¿í º¹ÀâÇÏ°Ô ÇÏ°í ÀÖ´Â °ÍÀÌ ,IEÀÇescape()ÇÔ¼ö´Â Åë»óÀÇUTF-16ÀÇURLencode(¿¹¸¦ µé¸éj2sdk1.4ÀÇURLEncoder.encode(str, ¡°UTF-16¡±);) ¿Í´Â ¿ÏÀüÈ÷ ´Ù¸¥ ´Ü¼øÇÑ Unicode Ç¥±âÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ» ¸¸µé¾î ³½´Ù , ¶ó°í ÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°ÀºhtmÆÄÀÏÀ»IE¿¡ ¿¸®¸é(ÀÚ) ,
<HTML> <HEAD> <TITLE>JavaScript
escape()/unescape() functionarity test</TITLE> <META
HTTP-EQUIV="content-type" CONTENT="text/html;
charset=SHIFT_JIS"> </TITLE> <BODY> <PRE> JavaScript¿¡
ÀÖ¾î¼ÀÇescapeÇÔ¼öÀÇ
ºê¶ó¿ìÀú¿¡ ÀÇÇÑ »óÀ§¸¦ üũÇÏ´Â <SCRIPT
LANGUAGE="JavaScript"> s="³»°¢ÃѸ®´ë½Å=ÄÚÀÌÁî¹Ì
ÁëÀÌÄ¡·Î"; document.writeln("original string : "+s); s=escape(s); document.writeln("escaped string : "+s); s=unescape(s); document.writeln("unescaped string :
"+s); </SCRIPT> </PRE> </BODY> </HTML> |
JavaScript¿¡
ÀÖ¾î¼ÀÇescapeÇÔ¼öÀÇ
ºê¶ó¿ìÀú¿¡ ÀÇÇÑ »óÀ§¸¦ üũÇÏ´Â original
string : ³»°¢ÃѸ®´ë½Å=ÄÚÀÌÁî¹Ì
ÁëÀÌÄ¡·Î escaped string : %u5185%u95A3%u7DCF%u7406%u5927%u81E3%3D%u5C0F%u6CC9%u7D14%u4E00%u90CE unescaped string : ³»°¢ÃѸ®´ë½Å=ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î |
Áï%u¥¥¥¥µÇ´Â UnicodeÀÇ16Áø Ç¥±â¸¦ µ¹·ÁÁÖ°í ÀÖ´Â °ÍÀÌ ºÐ ºô¸®°íÁö¿ä.
´ÙÀ½°ú °°ÀÌ ,IEÀÌunescape()ÇÔ¼ö¸¦ »ç¿ëÇØ Àо ¼ö ¾øÀ»±îURLEncoder.encode()¸Þ¼Òµå¸¦ »ç¿ëÇØ ¼¹öÃø¿¡¼ ,cookieÀ» ¼¼Æ® Çß´Ù°í ÇսôÙ.
import
java.io.*; import
java.net.*; import
javax.servlet.*; import
javax.servlet.http.*; /**
ÄíÅ°
ÀÐ°í ¾²±â ¼ºê ·¿
**/ public
class HelloCookie extends HttpServlet { public void doGet (HttpServletRequest req,
HttpServletResponse res) throws ServletException, IOException
{ PrintWriter out; Cookie[] cookies; Cookie cookie; String urlencoding = "UTF-16";
//ÇÊ¿äÇÏ°Ô
ÀÀÇÏ°í"Shift_JIS"À̳ª¡±UTF-8¡±µî
À» ½ÃÇèÇÏ´Â // CookieÀÇ
Ãëµæ cookies =
req.getCookies(); cookie = null; if (cookies != null){ for(int i=0; i < cookies.length; i++)
{ cookie =
cookies[i]; if
(cookie.getName().equals("HelloCookie")) { break; } } } res.setContentType("text/html;
charset=Shift_JIS"); out =
res.getWriter(); if (cookie == null) { // CookieÀÇ
±â·Ï String namestring = "³»°¢ÃѸ®´ë½Å"; String valuestring = "ÄÚÀÌÁî¹Ì
ÁëÀÌÄ¡·Î"; namestring =
URLEncoder.encode(namestring, urlencoding); valuestring =
URLEncoder.encode(valuestring, urlencoding); cookie = new Cookie(namestring,
valuestring); cookie.setMaxAge(300); // À¯È¿±â°£Àº5ºÐ
¿¡ ²÷¾îÁö´Â
res.addCookie(cookie);
out.println("<html><body>"); out.println("<h1>Write
Cookie</h1>");
out.println("<P>"); out.println("<SCRIPT
LANGUAGE=\"JavaScript\">");
out.println("s=unescape(document.cookie);"); out.println("document.write(\"unescaped
cookie : \"+s);");
out.println("</SCRIPT>");
out.println("</P>"); out.println("<p>¸®·Îµå
ÇØ ÁÖ¼¼¿ä. </p>");
out.println("</body></html>"); } else { // CookieÀÇ
Ç¥½Ã
out.println("<html><body>");
out.println("<h1>");
out.println(URLDecoder.decode(cookie.getValue(),
urlencoding));
out.println("</h1>"); out.println("<p>CookieÀÇ
»ùÇÃ(HelloCookie.java)</p>");
out.println("</body></html>"); } } } |
ÀÌ ¶§telnet¿¡ ¾×¼¼½º ÇØTomcatÀÌ ¼Û½ÅÇÏ´ÂHTTPÀÀ´ä ÆÐŶÀÇSet-CookieÇàÀ» Á¶»çÇϸé(ÀÚ) ´ÙÀ½°ú °°ÀÌ µÇ¾î ÀÖ½À´Ï´Ù.
Set-Cookie:
%FE%FF%51%85%95%A3%7D%CF%74%06%59%27%81%E3=%FE%FF%5C%0F%6C%C9%7D %14%4E%00%90%CE;Expires=Wed,
23-Oct-2002 04:33:23 GMT |
Áï ¡¸³»°¢ÃѸ®´ë½Å¡¹ÀÇ Ä³¸¯ÅÍ ¶óÀÎÀº%FE%FF%51%85%95%A3%7D%CF%74%06%59%27%81%E3¿¡ , ¡¸ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î¡¹ÀÇ Ä³¸¯ÅÍ ¶óÀÎÀº%FE%FF%5C%0F%6C%C9%7D%14%4E%00%90%CE¿¡ º¯È¯µÇ°í ÀÖ½À´Ï´Ù. FEFFµÇ´Â ij¸¯ÅÍ ¶óÀÎÀº ÀÌ°ÍÀÌBOM(¾Æ¸£¹ÙÀÌÆ®¼ø¼ ¸¶Å©) À¸·Î , ºò endianÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÀÌ°ÍÀÌ Á¤½ÄÀÇUTF-16ÄÚµå Ç¥½ÃÀÎ °ÍÀÔ´Ï´Ù. ¡¸³»°¢ÃѸ®´ë½Å=ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î¡¹¶ó°í Çϴ ij¸¯ÅÍ ¶óÀÎÀÇ °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ º¯È¯µË´Ï´Ù.
%FE%FF%51%85%95%A3%7D%CF%74%06%59%27%81%E3%00%3D%5C%0F%6C%C9%7D%14%4E%00%90%CE |
´ç¿¬ÇÑ ÀÏÀÌ¸é¼ ÀÌ ¼ºê ·¿ÀÇ Ãâ·ÂÀ»IEÀÇ unescape()ÇÔ¼ö´Â ¿Ã¹Ù¸£°Ô ¹Þ¾Æµé¿© ÁÖÁö ¾Ê½À´Ï´Ù.
IEÀÌ ¸¸µé¾î ³»´Â ¡¸³»°¢ÃѸ®´ë½Å=ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î¡¹ÀÇ ÀÎÄÚµùÀº Á¶±Ý Àü °¡¸®Å² °Íó·³ ´Ü¼øÇÑ Unicode Ç¥±âÀÇ
%u5185%u95A3%u7DCF%u7406%u5927%u81E3%3D%u5C0F%u6CC9%u7D14%u4E00%u90CE |
À̸ç , ÀÌ°Í°ú´Â ¿ÏÀüÈ÷ Â÷ÀÌ°¡ ³³´Ï´Ù. °Ô´Ù°¡¡±=¡±À̶ó°í ÇÏ´Â ¹®ÀÚ´Â Unicode Ç¥½ÃµÇÁö ¸»°í ´Ü¼øÇÑ%3DÀ̶ó°í ÇÏ´ÂASCII¹®Àڷμ ó¸®µÇ¾î ¹ö¸®°í ÀÖ½À´Ï´Ù. ¾î°¼%u003DÀ¸·Î ÇÏÁö ¾Ê´Â °ÍÀϱî¿ä. ECMA-262¿¡ ÁØ°ÅÇßÁö¸¸µíÀÔ´Ï´Ù¸¸ , °ï¶õÇÑ °ÍÀÔ´Ï´Ù. µû¶ó¼ ¡¸IEÀÇ °æ¿ì´Â ¼ö»óÇÑescape()°úunescape()ÇÔ¼ö´Â »ç¿ëÇÏÁö ¾Ê´Â ÆíÀÌ ÁÁ´Ù¡¹¶ó°í ÇÏ´Â °ÍÀÌ °á·ÐÀÔ´Ï´Ù.
µ¡ºÙ¿©¼ ¹æ±ÝÀüÀÇ ¼ºê ·¿À¸·Î String urlencoding = "Shift_JIS";À̶ó°í º¯°æÇØ , ÀÌ°ÍÀ»NN¿¡ È£ÃâÇϸé(ÀÚ) ´ÙÀ½°ú °°ÀÌ Á¤»óÀûÀ¸·Î Ç¥½ÃµË´Ï´Ù.
´ÜNNÀ¸·Î´ÂShift_JISÀÇURLencode¸¦
»ç¿ëÇÏ°í ÀÖÀ¸¸é ¹®Á¦°¡ ¾ø´Â°¡ Çϸé À¯°¨½º·´Áö¸¸ ±×·¸Áö´Â ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¸é ¡¸³»°¢ÃѸ®´ë½Å ÄÚÀÌÁî¹Ì
ÁëÀÌÄ¡·Î¡¹¶ó°í »çÀÌ¿¡ ¹Ý°¢ ½ºÆäÀ̽º ¹®ÀÚ°¡ µé¾î°¡ ÀÖÀ¸¸é(ÀÚ)NNÀº
¡¸³»°¢ÃѸ®´ë½Å+ÄÚÀÌÁî¹Ì
ÁëÀÌÄ¡·Î¡¹¶ó°í Ç÷¯½º ±âÈ£·Î ¹Ù²Ù¾î ÀÖ½À´Ï´Ù.
ÀÌ°ÍÀºURLencodeÀÇ
Çؼ®ÀÇ »óÀ§¿¡ ÀÇÇÏ´Â °ÍÀ¸·Î ,j2sdk1.4À¸·Î´Â
½ºÆäÀ̽º´Â¡±+¡±¹®ÀÚ·Î
º¯È¯Çϴµ¥ ,NNÀÇescape()ÇÔ¼öÀÇ
°æ¿ì´Â ½ºÆäÀ̽º¸¦%20À¸·Î
º¯È¯ÇÕ´Ï´Ù. ¼¼¼¼ÇÑ
ÀÏÀÔ´Ï´Ù¸¸j2sdk1.4À¸·Î´Â
ÃÑÀ̶ó°í ÅëÀÏÇØ%nnÀÇ
Çü½Ä¿¡¼ º¯È¯Çϴµ¥NNÀÇescape()ÇÔ¼öÀÇ
°æ¿ì´Â ¾Æ¸£¹ÙÀÌÆ®·Î °íÃÆÀ» ¶§¿¡ À§ÇèÇÑ ¹®ÀÚ°¡ ¾Æ´Ï¸é ±×´ë·Î1¾Æ¸£¹ÙÀÌÆ®
¹®Àڷμ º¯È¯ÇÕ´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î"³»°¢ÃѸ®´ë½Å
ÄÚÀÌÁî¹Ì
ÁëÀÌÄ¡·Î"µÇ´Â
ij¸¯ÅÍ ¶óÀÎÀÇ º¯È¯ÀÇ »óÀ§¸¦ ³ªÅ¸³»¸é(ÀÚ)£º
J2sdk1.4ÀÇURLEncoder.encode() |
%93%E0%8A%74%91%8D%97%9D%91%E5%90%62 +%8F%AC%90%F2%8F%83%88%EA%98%59 |
NNÀÇJavaScriptÀÇescape() |
%93%E0%8At%91%8D%97%9D%91%E5%90b %20%8F%AC%90%F2%8F%83%88%EA%98Y |
ÀÌ»ó·ÎºÎÅÍJavaScriptÀÇescape()°úunescape()ÀºIE°úNN½Ö¹æÀ¸·Î ¹®Á¦°¡ ÀÖ¾î ,Web¾îÇø®¿Í °°ÀÌ ¼¹ö/IE/NNÇÔ²² ¹®Á¦ ¾ø°í Á¤º¸ ±³È¯ Â ¼ö ÀÖÀ¸·Á°í ÇÏ´Â °÷ µîÀÇ ÇÔ¼ö´Â »ç¿ëÇØ¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù , ¶ó°í °á·Ð µË´Ï´Ù.
4. JavaScript¿¡
ÀÖ¾î¼ÀÇencodeURI,decodeURI,encodeURIComponent,decodeURIComponent
¹öÁ¯ |
´ëÇ¥ÀûÀÎ ºê¶ó¿ìÀú |
ºñ°í |
1.0 |
NN2.0 ÀÇ µµÁß ~ IE3.0 |
JavaScript ÀÇ ¿À¸®Áö³¯ÀÇ »ç¾ç |
1.1 |
NN3 IE3.02+JScript1.3ÆÐÄ¡ |
Array objectÀ̳ª À̺¥Æ®µîÀÇ Ãß°¡ |
1.2 |
NN4.0 ~ 4.05 IE4 |
Layer/DIV ±â´É, CSSÀÇ Ãß°¡ |
1.3 |
NN4.06 ~ IE5.0 ~ |
unicodeµî ÁÖ·Î ECMA-262´ëÀÀ |
1.4 |
NN5( °³¹ß ÁßÁö ) |
catch/try µî ÀÇ ¿¹¿Ü ó¸® µî( ECMA-262´ëÀÀ ) |
1.5 |
Mozilla5( NN6 ) IE6~ |
ECMA-262 3rd Edition |
2.0 |
? |
ECMA-262 4th Edition |
encodeURI | ||
¿øÀÇ Ä³¸¯ÅÍ ¶óÀÎ |
IE6ÀÇ Ãâ·Â |
NN7ÀÇ Ãâ·Â |
³»°¢ÃѸ®´ë½Å ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 %20%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 %20%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
³»°¢ÃѸ®´ë½ÅXÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 X%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 X%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
encodeURIComponent | ||
¿øÀÇ Ä³¸¯ÅÍ ¶óÀÎ |
IE6ÀÇ Ãâ·Â |
NN7ÀÇ Ãâ·Â |
³»°¢ÃѸ®´ë½Å ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 %20%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 %20%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
³»°¢ÃѸ®´ë½ÅXÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 X%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
%E5%86%85%E9%96%A3%E7%B7 %8F%E7%90%86%E5%A4%A7%E8%87%A3 X%E5%B0%8F%E6%B3%89%E7 %B4%94%E4%B8%80%E9%83%8E |
Ä«Å×°í¸® |
¹®ÀÚ |
reserved character |
, / ? : @ & = + $ , |
À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ¹®ÀÚ |
¾ËÆĺª, 10Áø¼öÀÚ, - _ . ! ~ * ' ( ) |
½ºÄÚ¾Æ |
# |
µû¶ódocument.cookie¿¡ ²¨³½ ij¸¯ÅÍ ¶óÀÎÀ» ±×´ë·Î µÇµ¹¸± ¶§´ÂdecodeURI()À» »ç¿ëÇÏ°Ô µË´Ï´Ù. ÄíÅ°ÀÇ ¡¸°ª¡¹À̳ª ¡¸À̸§¡¹À» ó¸®ÇÒ ¶§´ÂdecodeURIComponent()µî À» »ç¿ëÇÏ´Ù°í ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ°ÍÀºJavaScriptÀÌ ÄíÅ°¸¦ (À̸§ , °ª) ÀÇ ¿ÀºêÁ§Æ®ÀÇ ÁýÇÕÀÌ ¾Æ´Ï°í , ´Ü¼øÇÑ Ä³¸¯ÅÍ ¶óÀÎÀ¸·Î¼ ÃëÇØ ±Þ »ò±â ¶§¹®¿¡ »ý±ä ¹®Á¦ÀÔ´Ï´Ù. À̰͵µ ±×¸®°í ÇÁ·Î±×·¡¸Ó¿¡°Ô È¥¶õÀ» ÁÖ´Â ¿äÀÎÀÌ µË´Ï´Ù. ¸ÓÁö¾Ê¾Æ ±×ó·³ °³Á¤µÇ°Ô µÇ°ÚÁö¿ä.
µ¡ºÙ¿©¼£º
¡¡¡± %E5%86%85%E9%96%A3%E7%B7%8F%E7%90%86%E5%A4%A7%E8%87%A3%20%E5%B0%8F%E6%B3%89%E7%B4%94%E4%B8%80%E9%83%8E¡±
µÇ´Â ij¸¯ÅÍ ¶óÀÎÀº ,decodeURI()µµdecodeURIComponent()µµ °°´Ù¡± ³»°¢ÃѸ®´ë½Å=ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î¡±À» µ¹·ÁÁÖ°Ú½À´Ï´Ù.
±×·¸Áö¸¸
, ȣȯ¼ºÀÇ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. Áïj2sdk1.4ÀÇURLencoder.encode(String,¡±UTF-8¡±)ÀÌ
À̽ºÄÉÀÌÇÁ Çϴ ij¸¯ÅÍ ¼¼Æ®¿ÍencodeURIÀÇ
À̽ºÄÉÀÌÇÁ Çϴ ij¸¯ÅÍ ¼¼Æ®°¡ ´Ù¸¨´Ï´Ù. ´õ¿í ,j2sdk1.4¿¡URLencode
ÇÑ Ä³¸¯ÅÍ ¶óÀÎÀÌdecodeURIÇÔ¼ö¿¡¼´Â
¿Ã¹Ù¸£°Ô Àо ¼ö ¾ø°Ô µË´Ï´Ù.
encodeURIÇÔ¼ö°¡ À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ¹®ÀÚ´Â ¾Æ·¡ Ç¥ °°¾Ò½À´Ï´Ù.
Ä«Å×°í¸® |
¹®ÀÚ |
reserved character |
, / ? : @ & = + $ , |
À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ¹®ÀÚ |
¾ËÆĺª, 10Áø¼öÀÚ, - _ . ! ~ * ' ( ) |
½ºÄÚ¾Æ |
# |
EncodeURIComponentÇÔ¼ö ÂÊÀº À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ij¸¯ÅÍ ¶óÀο¡´Â reserved character°¡ Æ÷ÇÔµÇÁö ¾Ê´Â °ÍÀÌ ´Ù¸¥ °÷(Áß)ÀÔ´Ï´Ù.
±×·¸Áö¸¸ ,j2sdk1.4ÀÇURLencoder.encode(String,¡±UTF-8¡±)ÀÌ À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ¹®ÀÚ´Â ¾Æ·¡ Ç¥¿Í °°ÀÌ µÇ¾î ÀÖ½À´Ï´Ù. ÀûÀÚ ÇÑÆí ±â¿ï±â ¹®ÀÚÀÇ ºÎºÐÀÌ À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ¹®ÀÚ , ´Ü ½ºÆäÀ̽º(SP)Àº¡±+¡±¿¡ ¿Å°Ü³õ°í ÇÑÆí ±×°ÍÀº À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ¹®ÀÚÀÔ´Ï´Ù.
Char Decimal
Hex ¡¡¡¡Char ¡¡
Decimal ¡¡
Hex
NUL 0
0 SOH 1
1 STX 2
2 ETX 3 3 EOT 4
4 ENQ 5 5 ACK 6
6 BEL 7 7 BS 8 8 HT 9 9 NL 10 a VT 11 b NP 12 c CR 13 d SO 14 e SI 15 f DLE 16
10 DC1 17
11 DC2 18
12 DC3 19
13 DC4 20
14 NAK 21
15 SYN 22
16 ETB 23
17 CAN 24
18 EM 25
19 SUB 26
1a ESC 27
1b FS 28
1c GS 29
1d RS 30
1e US 31
1f SP 32
20 ! 33
21 " 34 22 # 35
23 $ 36 24 % 37
25 & 38 26 ' 39
27 ( 40 28 ) 41
29 * 42 2a + 43
2b , 44
2c - 45 2d . 46 2e / 47
2f 0 48 30 1 49
31 2 50 32 3 51
33 4 52 34 5 53
35 6 54 36 7 55
37 8 56 38 9 57
39 : 58 3a ; 59
3b < 60 3c = 61
3d > 62 3e ? 63
3f @ 64 40 A 65
41 B 66 42 C 67
43 D 68 44 E 69
45 F 70
46 G 71
47 H 72 48 I 73
49 J 74 4a K 75
4b N 78 4e O 79
4f P 80 50 Q 81
51 R 82 52 S 83
53 T 84 54 U 85
55 V 86 56 W
87
57 X 88 58 Y 89
59 Z 90 5a [ 91
5b \ 92 5c ] 93
5d ^ 94 5e _ 95 5f ` 96 60 a 97 61 b 98 62 c 99
63 d 100 64 e 101
65 f 102 66 g 103
67 h 104
68 i 105
69 j 106 6a k 107
6b l 108 6c m 109
6d n 110 6e o 111
6f p 112 70
q 113
71 r 114 72 s 115
73 t 116 74 u 117
75 v 118 76 w 119
77 x 120 78 y
121
79 z 122 7a { 123
7b | 124 7c } 125
7d ~ 126 7e DEL 127 7f |
µû¶ó¼ ½ÇÇè ¼ºê ·¿ÀÇ ÇÁ·Î±×·¥À¸·Î ,
String namestring = "URLencodeÀÇ
½ÇÇè"; String valuestring = "
!\"#$%&'()*+"+'\u002c'+"-./01289:;<=>?@ABCXYZ[\\]"+'\u005e'+'\u005f'+'\u0060'+"abcxyz{|}"+'\u007e'; namestring =
URLEncoder.encode(namestring, urlencoding); valuestring = URLEncoder.encode(valuestring, urlencoding); |
À¸·Î¼£§\u0020£§ºÎÅÍ£§\u007e£§±îÁö ÀÇ ¹®ÀÚ°¡ ¾î¶»°ÔURLencode µÇ¾î ÇÑÆíJavaScriptÀÇdecodeURIÇÔ¼ö°¡ ¾î¶»°Ô µðÄÚµåÇұ ½ÃÇèÇØ º¸¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
undecoded
cookie :
URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%AE%9F%E9%A8%93 =+%21%22%23%24%25%26%27%28%29*%2B%2C-.%2F01289%3A%3B%3C%3D%3E%3F%40ABCXYZ%5B%5C%5D%5E_%60 abcxyz%7B%7C%7D%7E decoded
cookie : URLencodeÀÇ
½ÇÇè=+!"%23%24%%26'()*%2B%2C-.%2F01289%3A%3B<%3D>%3F%40ABCXYZ[\]^_`abcxyz{|}~ |
ÁïdecodeURIÇÔ¼ö´Â
reserved character¿Í ½ºÄÚ¾Æ ¹®ÀÚ¿¡ÀÇ µðÄÚµå´Â ÇÏÁö ¾Ê°í , ±×´ë·Î À̽ºÄÉÀÌÇÁ Ç¥½Ã¸¦ µ¹·ÁÁÖ¾î ¹ö¸®°í ÀÖ½À´Ï´Ù.
½ÇÁ¦´ÂencodeURI¿¡
À̽ºÄÉÀÌÇÁ ÇÏÁö ¾Ê´Â ¹®ÀÚ¿¡ÀÇ µðÄÚµåÃÑÀ̶ó°í°¡ ºñµðÄÚµåÀÇ ´ë»óÀÌ µË´Ï´Ù.
¡¸ÀÌ·¯ÇÑ ¹®ÀÚ¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¡¹¶ó°í ÇÏ´Â °Íµµ ÇϳªÀÇ ÇØ°á¹ýÀÏÁöµµ ¸ð¸£Áö¸¸ , ³Ê¹« ÁÁÀº ¼ö´ÜÀ̶ó°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù.
±×¸®°í , ÄíÅ°¸¦ ÀÏ°ý encode ÇÏ´Â °æ¿ì´ÂencodeURIComponentÇÔ¼ö¸¦ ÀÌ¿ëÇؼ´Â ¾ÈµÇ´Â °Íµµ ÀØÁö ¸»¾Æ ÁÖ¼¼¿ä.
5. ±×·¯¸é µµ´ëü ¾î¶»°Ô Çϸé ÁÁÀº°¡?
ÇöÀç »óÅ·μ´Â À¯°¨½º·´Áö¸¸encodeURI,decodeURI,encodeURIComponent,decodeURIComponentÀ̶ó°í ÇÏ´Â ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Â ºê¶ó¿ìÀú°¡ ¾ÆÁ÷µµ ¸¹ÀÌ ÀÌ¿ëµÇ°í ÀÖ´Â Çö»óÀÎ °Í , ÀÌ·¯ÇÑ ÇÔ¼ö°¡Java 2Ç÷§ÆûÀÇURLencode¿ÍÀÇ È£È¯¼ºÀÌ ¾ø´Â °ÍÀ» °¨¾ÈÇØ ,cookie°úJavaScriptÀ» »ç¿ëÇØ Å¬¶óÀ̾ðÆ®/¼¹ö°£¿¡ Á¤º¸ ±³È¯ÇÏ´Â °æ¿ì¿¡´Â ¾î¶»°Ô Çϸé ÁÁÀº °ÍÀϱî¿ä? °á±¹ ´ÙÀ½°ú °°Àº °á·ÐÀÌ µË´Ï´Ù.
°á·Ð
JavaScriptÀÌ ¼¹ö°¡ ¼¼Æ® ÇÑ ÄíÅ°¸¦ ó¸®ÇÏ´Â °Í °°Àº ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ£º
1) ÄíÅ°ÀÇ À̸§°ú °ª ¸ðµÎURLencode ÇÏ´Â °ÍÀÌ Ãßõ µÇÁö¸¸ ,À̸§Àº ¡¸À§Ç衹ÀÌ ¾Æ´Ñ (URLencode¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù ) ¹®ÀڷκÎÅÍ µÇ´Â ¿µ¼ö ij¸¯ÅÍ ¶óÀο¡ ÇÑÁ¤ÇØ¾ß ÇÕ´Ï´Ù. telnetµîÀÇ Åø¿¡ ÀÇÇÑ °ËÁõÀ̳ª µð¹ö±×ÀÇ º¯À» ¹è·ÁÇÑ °ÍÀÔ´Ï´Ù.
2) NN¹×IEÀÇescape()°úunescape()ÇÔ¼ö´Â ¹®Á¦°¡ ÀÖÀ¸¹Ç·Î »ç¿ëÇØ µÇÁö ¾Ê½À´Ï´Ù. EncodeURI(),decodeURI(),encodeURIComponent(),decodeURIComponent()µµ , ³°Àº ¹öÁ¯ÀÇ ºê¶ó¿ìÀú¿¡¼´Â ´ëÀÀ µÇ¾î ÀÖÁö ¾Ê°í ,j2sdk1.4°úÀÇ È£È¯¼ºÀÇ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. °á±¹J2sdk1.4ÀÇjava.netÀÇ ÆÐÅ°Áö¿¡ ÀÖ´ÂURLEncoder.encode()¹×URLDecoder.decode()°ú °°Àº ±â´ÉÀ» °¡ÁøJavaScriptÀÇ ÇÔ¼ö¸¦ ÁغñÇÏ´Â °ÍÀÌ º£½ºÆ®ÀÔ´Ï´Ù. ±×·¯¸é ÀÚ½ÅÀÌ ¾î´À ºê¶ó¿ìÀú»óÀÇ ¾î´À ¹öÁ¯À¸·Î ´Þ¸®°í ÀÖÀ»±î¸¦JavaScriptÀº ½Äº°ÇÒ ÇÊ¿äµµ ¾ø¾îÁý´Ï´Ù.
URLencode´ÂUTF-8¿¡ ÅëÀÏÇÑ´Ù. ÀÌ°ÍÀºEncodeURI(),decodeURI(),encodeURIComponent(),decodeURIComponent()ÀÌUTF-8À» »ç¿ëÇÏ°í Àֱ⠶§¹®À̶ó°í ÇÏ´Â ÀÌÀ¯ÀÔ´Ï´Ù. ¶ÇJavaÀÇ »ç¾ç¿¡ ´ëÇصµUTF-8À» Ãßõ ÇÏ°í ÀÖ½À´Ï´Ù. ÀϺ»¾î¿¡¼´Â Áö±ØÈ÷ È¿À²ÀÌ ³ª»Þ´Ï´Ù¸¸ , ÀÌ ¼¼°è¿¡¼´ÂUTF-8À» Ç¥ÁØÀûÀ¸·Î »ç¿ëÇÏ´Â ÆíÀÌ ¹«³ÇÏ°ÚÁö¿ä.
6. UTF-8ÀÇURLencode·µðÄÚµå ÇÔ¼öÀÇ ¿¹£º
Unicode(1¾Æ¸£¹ÙÀÌÆ® ,2¾Æ¸£¹ÙÀÌÆ®Àå ,4¾Æ¸£¹ÙÀÌÆ®ÀåÀÌ ÀÖ´Ù ) ¸¦ ¿ÜºÎ¿Í ¾Æ¸£¹ÙÀÌÆ®¿·Î¼ ±³È¯ÇÏ´Â Çü½Ä(Unicode Transfer Format: UTF)¿¡´ÂUTF-8°úUTF-16ÀÌ Àß »ç¿ëµË´Ï´Ù. À̹øÀºUTF-8¿¡ ÀÇÇÑURLencode¸¦ °ËÅäÇϹǷΠ,UTF-8¿¡ÀÇURLº¯È¯¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù. ÀÌ´ë·Î »ç¿ëÇҰŶó°í´Â ¸»¾¸µå¸®Áö ¾Ê½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥À» Âü°í·Î ÇØ ÁÖ½Ã¸é ´ÙÇàÀÔ´Ï´Ù. |
UCSºÎÅÍUTF-8¿¡ÀÇ º¯È¯¹ýÀº ´ÙÀ½ÀÇ Å×ÀÌºí¿¡ ³ªÅ¸³½ °Íó·³ µË´Ï´Ù.
UCSºÎÅÍUTF-8¿¡ÀÇ º¯È¯¹ý
UCS-2
(UCS-4) |
ºñÆ®
ÆÐÅÏ |
Á¦1¹ÙÀÌÆ® |
Á¦2¹ÙÀÌÆ® |
Á¦3¹ÙÀÌÆ® |
Á¦4¹ÙÀÌÆ® |
U+0000
.. U+007F |
00000000-0xxxxxxx |
0xxxxxxx |
|
|
|
U+0080 ..
U+07FF |
00000xxx-xxyyyyyy |
110xxxxx |
10yyyyyy |
|
|
U+0800 ..
U+FFFF |
xxxxyyyy-yyzzzzzz |
1110xxxx |
10yyyyyy |
10zzzzzz |
|
U+10000.. U+1FFFFF |
00000000-000wwwxx- xxxxyyyy-yyzzzzzzz |
11110www |
10xxxxxx |
10yyyyyy |
10zzzzzz |
ÀÌ Çü½ÄÀÇ Æ¯Â¡Àº1¾Æ¸£¹ÙÀÌÆ® ¹®ÀÚ ÀÌ¿Ü´Â ¸Ç À§ÀÇ ºñÆ®(MSB)ÀÌ Á¦·Î°¡ µÇÁö ¾Ê´Â °ÍÀ¸·Î , ¸Ç À§ÀÇ ºñÆ®°¡ Á¦·ÎÀÇ ¹®ÀÚ´Â7ºñÆ®ASCIIij¸¯ÅÍ ¼¼Æ® ±× ÀÚü¶ó°í ÇÏ´Â °ÍÀÔ´Ï´Ù. µû¶ó¼ º¯È¯ÀÇ ¾Ë°í¸®ÁòÀº Áö±ØÈ÷ °£´ÜÇÕ´Ï´Ù. URLº¯È¯¿¡ ÁîÀ½Çؼ´Â1¾Æ¸£¹ÙÀÌÆ® Çü½Ä ÀÌ¿ÜÀÇ Çü½Ä¿¡¼´Â ¹Ýµå½Ã °¢ ¾Æ¸£¹ÙÀÌÆ®´Â%hh°ú À̽ºÄÉÀÌÇÁ Çü½ÄÀÌ µË´Ï´Ù.
java.net.URLencoder.encode(String,¡±UTF-8¡±)¿¡ »ó´çÇÑ ÇÔ¼ö¸¦JavaScript¿¡ ½ÇÇöµÉ ¶§´Â , ´ÙÀ½°ú °°Àº ¾Ë°í¸®ÁòÀÌ µË´Ï´Ù.
¸¸¾à ±×
¹®ÀÚ°¡'\u0020£§¶ó¸é , ±×°ÍÀ»'\u002b£§¿¡ ¿Å°Ü³õ´Â ¡¡¡¡±×·¸Áö
¾ÊÀ¸¸é , ¡¡¡¡¡¡¡¡¸¸¾à
±× ¹®ÀÚ°¡'\u002a£§,'\u002d£§,'\u002e£§,'\u0030£§¥¥'\u0039£§,
'\u0042£§¥¥ '\u005a£§,'\u005f£§,'\u0061£§¥¥'\u007a£§(ÀÌ)°¡
¾Æ´Ï¸é ¡¡¡¡¡¡¡¡¡¡¡¡±× ¹®ÀÚ¸¦UTF-8º¯È¯ÇØ , °¢ ¾Æ¸£¹ÙÀÌÆ®¸¦%XXÀÇ À̽ºÄÉÀÌÇÁ ij¸¯ÅÍ ¶óÀÎÀ¸·Î º¯È¯ÇÑ´Ù |
java.net.URLdecoder.decode(String,¡±UTF-8¡±)¿¡ »ó´çÇÑ ÇÔ¼öÀÇ ¾Ë°í¸®ÁòÀº£»
¸¸¾à ±×
¹®ÀÚ°¡'+£§¶ó¸é , ±×°ÍÀ»' £§¿¡ ¿Å°Ü³õ´Â ¡¡¡¡±×
ÀÌ¿ÜÀÇ ¹®ÀÚ·Î , ¸¸¾à ±×
¹®ÀÚ°¡ À̽ºÄÉÀÌÇÁ ij¸¯ÅÍ ¶óÀÎÀ̶ó¸é ÀÌ°ÍÀ»UTF-8º¯È¯À̶ó°í ÇØ Unicode ¹®ÀÚ¿¡
µÇµ¹¸®´Â ¡¡¡¡¡¡¡¡(±× ÀÌ¿ÜÀÇ ¹®ÀÚ´Â ±×´ë·Î) |
°ú °£´ÜÇÑ °ÍÀÔ´Ï´Ù.
ÀÌÇÏ¿¡ ±× ÇÔ¼ö¿Í ½ÇÇè¿ëHTMLÀ» ³ªÅ¸³À´Ï´Ù. ÀÌ·¯ÇÑ ÇÔ¼ö´Â Àå·¡ÀÇ È®Àå4¾Æ¸£¹ÙÀÌÆ®Àå Unicode(UCS-4)¿¡µµ ´ëÀÀÇÏ°í ÀÖ½À´Ï´Ù. ÀÌHTMLÆÄÀÏÀ» ºê¶ó¿ìÀú·Î ¿¸®¸é(ÀÚ) ´ÙÀ½°ú °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ°ÚÁö¿ä.
JavaScript¿¡
ÀÇÇÑJ2Ç÷§Æû ȣȯURLencode ÇÔ¼ö¿Í ±× Å×½ºÆ® original
string : ³»°¢ÃѸ®´ë½Å ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î
!"#$%&'()*+,-./01289:;<=>?@ABCXYZ[\]^_`abcxyz{|}~ URL
encoded string : %e5%86%85%e9%96%a3%e7%b7%8f%e7%90%86%e5%a4%a7%e8%87%a3+%e5%b0%8f%e6%b3%89%e7%b4%94%e4%b8%80%e9 %83%8e+%21%22%23%24%25%26%27%28%29*%2b%2c-.%2f01289%3a%3b%3c%3d%3e%3f%40ABCXYZ%5b%5c%5d%5e_%60 abcxyz%7b%7c%7d%7e URL
decoded string : ³»°¢ÃѸ®´ë½Å ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î
!"#$%&'()*+,-./01289:;<=>?@ABCXYZ[\]^_`abcxyz{|}~ |
½ÇÁ¦ÀÇ ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ£º
¾Æ) À¥·¼¹öÃøÀº ¡¸°ª¡¹ÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ»java.net.URLEncoder.encode(String, ¡°UTF-8¡±)À» »ç¿ëÇØURLencode ÇØ ÄíÅ°ÀÇ ¡¸°ª¡¹¿¡ ¼¼Æ® ÇÏ´Â
ÀÌ) ºê¶ó¿ìÀú´ÂWindow.document.cookie¿¡ ²¨³½ ij¸¯ÅÍ ¶óÀÎÀ»
(¾Æ) ¡¸À̸§¡¹°ú¡¸°ª¡¹¿¡ À§ÇèÇÑ ¹®ÀÚ°¡ Æ÷ÇÔµÇÁö ¾ÊÀ¸¸é ±×´ë·Î »õ·Î¿îdecodeURL()¿¡ °ÉÄ¡´ÂÁö ,
(ÀÌ) ¡¸°ª¡¹ÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ»decodeURL()¿¡ °ÉÄ¥±î
ÇØ ¿Ã¹Ù¸¥ ij¸¯ÅÍ ¶óÀο¡ µÇµ¹¸®°Ô µË´Ï´Ù.
¿ì) Window.document.cookieÀ» º¯°æÇÏ´Â °æ¿ì´Â , »õ·Î¿îencodeURL()ÇÔ¼ö¸¦ »ç¿ëÇØ ¿ªÀÇ Á¶ÀÛÀ» ÇÕ´Ï´Ù. ´ÜWindow.document.cookie¿¡ ¹«¾ùÀΰ¡ »õ·Î¿î ¡¸À̸§¡¹ÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ» ´ëÀÔÇÑ´Ù°í ÇÏ´Â °ÍÀº , Áö±Ý±îÁöÀÇ ÄíÅ°¿¡ »õ·Î¿î ÄíÅ°°¡ Ãß°¡µÈ´Ù ( ¡¸À̸§¡¹ÀÌ °°À¸¸é ±× ¡¸°ª¡¹À» °íÃÄ ¾µ ¼ö ÀÖ½À´Ï´Ù. ) µÇ´Â °Í¿¡ ÁÖÀÇÇսôÙ.
Âü°í£º
ÄíÅ°Áß¿¡¼ ¼ÒÁ¤ÀÇ À̸§ÀÇ °ªÀ» ÃßÃâÇÏ´Â ÇÔ¼öÀÇ ¿¹ÀÔ´Ï´Ù.
function loadCookie(name) {
var allcookies = document.cookie;
if (allcookies == "") return "";
var start = allcookies.indexOf(name +
"="); if (start == -1) return "";
start += name.length + 1;
var end =
allcookies.indexOf(';',start); if (end == -1) end = allcookies.length;
return allcookies.substring(start,end);
} |
ÄíÅ°ÀÇ ¡¸°ª¡¹ÀÌURLencode µÇ°í ÀÖ´Â °æ¿ì´Â ,
var decodedValue =
decodeURL(loadCookie(name));
°ú °°ÀÌ µðÄÚµåÇÕ´Ï´Ù. ±×¸®°í ¡¸À̸§¡¹À̳ª ¡¸°ª¡¹¿¡ ¿¹¾à¾î(reserved word)°¡ Æ÷ÇÔµÇÁö ¾ÊÀº °ÍÀÌ ¶Ñ·ÇÇÑ °æ¿ì´Â
var allcookies = decodeURL(document.cookie);
À̶ó°í ÇÏ´Â ÀÏ°ýó¸®ÀÇ »ç¿ë¹ýµµ °¡´ÉÇÕ´Ï´Ù.
ÇÁ·Î±×·¥¿¹
<HTML>
<HEAD>
<TITLE>j2
platform equivalent URL encode/decode
functions</TITLE>
<META
HTTP-EQUIV="content-type" CONTENT="text/html;
charset=SHIFT_JIS">
</TITLE>
<SCRIPT
LANGUAGE="JavaScript">
/* Function Equivalent to
java.net.URLEncoder.encode(String, "UTF-8")
Copyright (C) 2002, Cresc
Corp.
Version: 1.0
*/
function
encodeURL(str){
var s0, i, s, u;
s0 = ""; // encoded
str
for (i = 0; i < str.length; i++){ // scan the source
s = str.charAt(i);
u = str.charCodeAt(i); // get unicode of the
char
if (s == " "){s0 += "+";} // SP should be converted to
"+"
else {
if ( u == 0x2a || u == 0x2d || u ==
0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >=
0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <=
0x7a))){ // check for
escape
s0 = s0 + s; // don't
escape
}
else { //
escape
if ((u >= 0x0) && (u
<= 0x7f)){ // single byte
format
s =
"0"+u.toString(16);
s0 += "%"+
s.substr(s.length-2);
}
else if (u > 0x1fffff){ // quaternary byte format
(extended)
s0 += "%" + (oxf0 + ((u
& 0x1c0000) >> 18)).toString(16);
s0 += "%" + (0x80 + ((u
& 0x3f000) >> 12)).toString(16);
s0 += "%" + (0x80 + ((u
& 0xfc0) >> 6)).toString(16);
s0 += "%" + (0x80 + (u &
0x3f)).toString(16);
}
else if (u > 0x7ff){ // triple byte
format
s0 += "%" + (0xe0 + ((u
& 0xf000) >> 12)).toString(16);
s0 += "%" + (0x80 + ((u
& 0xfc0) >> 6)).toString(16);
s0 += "%" + (0x80 + (u &
0x3f)).toString(16);
}
else { // double byte
format
s0 += "%" + (0xc0 + ((u
& 0x7c0) >> 6)).toString(16);
s0 += "%" + (0x80 + (u &
0x3f)).toString(16);
}
}
}
}
return s0;
}
/* Function Equivalent to
java.net.URLDecoder.decode(String, "UTF-8")
Copyright (C) 2002, Cresc
Corp.
Version: 1.0
*/
function
decodeURL(str){
var s0, i, j, s, ss, u, n,
f;
s0 = ""; // decoded
str
for (i = 0; i < str.length; i++){ // scan the source str
s = str.charAt(i);
if (s == "+"){s0 += " ";} // "+" should be changed to
SP
else {
if (s != "%"){s0 += s;} // add an unescaped
char
else{ // escape sequence
decoding
u = 0; // unicode of the
character
f = 1; // escape flag, zero means end of this
sequence
while (true)
{
ss = ""; // local str to parse as
int
for (j = 0; j < 2;
j++ ) { // get two maximum hex characters
for parse
sss =
str.charAt(++i);
if (((sss >= "0")
&& (sss <= "9")) || ((sss >= "a") && (sss <= "f")) || ((sss >= "A") && (sss <=
"F"))) {
ss += sss; // if hex, add the hex
character
} else {--i;
break;} // not a hex char., exit the
loop
}
n = parseInt(ss, 16); // parse the hex str as
byte
if (n <= 0x7f){u = n; f =
1;} // single byte
format
if ((n >= 0xc0)
&& (n <= 0xdf)){u = n & 0x1f; f = 2;} // double byte format
if ((n >= 0xe0)
&& (n <= 0xef)){u = n & 0x0f; f = 3;} // triple byte format
if ((n >= 0xf0)
&& (n <= 0xf7)){u = n & 0x07; f = 4;} // quaternary byte format
(extended)
if ((n >= 0x80)
&& (n <= 0xbf)){u = (u << 6) + (n & 0x3f); --f;} // not a first, shift and add 6 lower
bits
if (f <= 1){break;} // end of the utf byte
sequence
if (str.charAt(i + 1) == "%"){ i++
;} // test for the next
shift byte
else {break;} // abnormal, format
error
}
s0 += String.fromCharCode(u); // add the escaped
character
}
}
}
return s0;
}
</SCRIPT>
</HEAD>
<BODY>
<PRE>
JavaScript¿¡
ÀÇÇÑJ2Ç÷§Æû ȣȯURLencode ÇÔ¼ö¿Í ±× Å×½ºÆ®
<SCRIPT
LANGUAGE="JavaScript">
s = "³»°¢ÃѸ®´ë½Å ÄÚÀÌÁî¹Ì ÁëÀÌÄ¡·Î" + " !\"#$%&'()*+"
+ '\u002c'+ "-./01289:;<=>?@ABCXYZ[\\]" + '\u005e' + '\u005f' + '\u0060' +
"abcxyz{|}" + '\u007e';
document.writeln("original string : "+s);
s = encodeURL(s);
document.writeln("URL encoded string :
"+s);
s = decodeURL(s);
document.writeln("URL decoded string :
"+s);
</SCRIPT>
</PRE>
</BODY>
</HTML>
7. JSP°úJavaScript°£ÀÇ ÄíÅ°¿¡ ÀÇÇÑ µ¥ÀÌÅÍ ±³È¯¿¹
¸¶Áö¸·¿¡ ¿©·¯ºÐÀÌ ½ÇÁ¦·Î ¼¹öÀÇ ÇÁ·Î±×·¥ÀÌ ÀÛ¼ºµÉ ¶§ÀÇ Âü°í·Î¼JSP°úJavaScript°£¿¡ ÅؽºÆ®¸¦ ÄíÅ°¸¦ °³ÀÔ½ÃÄÑ ±³È¯ÇÏ´Â »ùÇÃÀ» °¡¸®Å°°Ú½À´Ï´Ù. |
ÀÌJSPÀ» ºê¶ó¿ìÀú°¡ ¾×¼¼½º Çϸé(ÀÚ) ´ÙÀ½°ú °°Àº ȸéÀ» ¾òÀ» ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
µ¿ÀÛÀº ´ÙÀ½°ú °°½À´Ï´Ù£º
1. ÃÖÃÊ·Î À¯Àú´Â ÅؽºÆ® ¿¡¸®¾î¿¡ ÀÓÀÇÀÇ ÅؽºÆ®¸¦ ÀÔ·ÂÇØ , ¡¸ÄíÅ° ±â·Ï°ú ¼Û½Å¡¹ÀÇ ¹öÆ°À» ´©¸£¸é(ÀÚ) , ±× ÅؽºÆ®´ÂURLencode µÈ ÈÄ¡±userdata¡±À̶ó°í ÇÏ´Â ¡¸À̸§¡¹ÀÇ ¡¸°ª¡¹À¸·Î Çؼ ÄíÅ°¿¡ ¼¼Æ® µÇ°í ¼¹ö¿¡ º¸³»Áý´Ï´Ù.
2. ¼¹ö´Â Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ º¸³»Á® ¿Â ÄíÅ°ÀÇ ³»¿ëÀÇ ¸ðµç °ÍÀ» ¸ÕÀú ¡¸À̸§¡¹/¡¸°ª¡¹¼¼Æ®·Î¼ Ŭ¶óÀ̾ðÆ®¿¡ÀÇHTMLÅؽºÆ®¿¡ ±âÀÔÇÕ´Ï´Ù. ±× ¶§ ¡¸°ª¡¹ ÂÊ ÀºURLµðÄÚµåÇÑ °ÍÀ» °ýÈ£·Î ¹¾î ÇÔ²² ±âÀÔÇÕ´Ï´Ù.
3. ¼¹ö´Â¡±userdata¡±À̶ó°í ÇÏ´Â ¡¸À̸§¡¹ÀÇ ¡¸°ª¡¹ÀÇ ºÎºÐÀ»URLµðÄÚµåÇÑ À¯Àú·ÎºÎÅÍÀÇ ÅؽºÆ®¸¦ ÀçÂ÷URLencode ÇØ ÄíÅ°¿¡ ¼¼Æ® ÇÕ´Ï´Ù.
4. Ŭ¶óÀ̾ðÆ® ÂÊÀº , ¼¹ö·ÎºÎÅÍÀÇHTMLÅؽºÆ®¸¦ Ç¥½Ã ÇÔ°ú µ¿½Ã¿¡ , ÇÔ²² º¸³»Á® ¿ÂJavaScript¿¡ ÀÇÇØ ¼ö½ÅÇÑ ÄíÅ°ÀÇ ³»¿ëÀ» »ýÀ¸·Î Ç¥½ÃÇØ , ´ÙÀ½¿¡¡±userdata¡±ÀÇ ¡¸°ª¡¹ÀÇ ºÎºÐÀ»URLµðÄÚµåÇØ Ç¥½ÃÇÕ´Ï´Ù.
5. ¼Û½ÅÇÑ ÅؽºÆ®¿Í µ¹·Á º¸³»Á® ¿Â ÅؽºÆ®°¡ ÀÏÄ¡Çϸé , ¿Ã¹Ù¸£°Ô ±³½ÅÀ» ÇÒ ¼ö ÀÖ´ø °ÍÀÌ µË´Ï´Ù.
Á¤¸»·Î ÄíÅ°°¡ ¼¹ö¿Í Ŭ¶óÀ̾ðÆ® ½Ö¹æ¿¡¼ ±âÀÔÇÏ°í ÀÖÀ»±î °ÆÁ¤ÀԴϱî? URLencode µÈ ÄíÅ°ÀÇ ¡¸°ª¡¹À» ºÁ ÁÖ¼¼¿ä. À̽ºÄÉÀÌÇÁ µÈ ¹®ÀÚ°¡JavaScriptÂÊ Àº ¼Ò¹®ÀÚÀÇ16Áø Ç¥½Ã ,JSPÂÊ Àº ´ë¹®ÀÚÀÇ16Áø Ç¥½Ã°¡ µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ°ÍÀºJavaScriptÀÇNumber.toString(16)¸Þ¼Òµå°¡ ¼Ò¹®ÀÚ·Î Ãâ·ÂÇϴµ¥ ´ëÇØ ,Java 2Ç÷§ÆûÀÇURLEncoder.encode(String,¡±UTF-8¡±)µÇ´Â ¸Þ¼Òµå´Â ´ë¹®ÀÚ·Î Ãâ·ÂÇϱ⠶§¹®ÀÔ´Ï´Ù. ÀÌ°ÍÀ¸·Î ½Ö¹æÀÇURLó¸® ÇÔ¼ö°¡ ±â´ÉÇØ , ÇÑÆí ȣȯ¼ºÀÌ ÀâÈ÷°í ÀÖ´Â °ÍÀÌ È®Àε˴ϴÙ.
µ¡ºÙ¿© º¹±Í³ª °³Ç൵ ÀÔ·ÂÇÒ ¼ö Àֱ⠶§¹®¿¡ ½ÃÇèÇØ ÁÖ¼¼¿ä. HTMLÀ¸·Î´Â ÀÌ·¯ÇÑ ¹®Àڴ ǥ½ÃµË´Ï´Ù¸¸ , ¿Ã¹Ù¸£°í encode 󸮵ǰí ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ºê¶ó¿ìÀúÀÇ ¼³Á¤¿¡ µû¶ó¼´Â º¹±Í(CR: %0d)°ú °³Çà(NL: %0a)½Ö¹æÀÌ ÄíÅ°¿¡ µé¾î°¡´Â °æ¿ìµµ ÀÖ°í , °³ÇุÀÇ °æ¿ìµµ Àֱ⠶§¹®¿¡ °³Çà 󸮿¡´Â ÁÖÀÇ°¡ ÇÊ¿äÇÕ´Ï´Ù.
ÀÌÇÏ¿¡JSPÆäÀÌÁö¸¦ ¼Ò°³ÇÕ´Ï´Ù. JSP¼Ó ¿¡JavaScriptµµ µé¾î°¡ ÀÖÀ¸¹Ç·Î Àб⠾î·Á¿î °÷Àº Âü¾Æ ÁÖ¼¼¿ä. JSPÀÇ ÇÁ·Î±×·¥ ºÎºÐÀ» »¡°À¸·Î ,JavaScriptÀÇ ºÎºÐÀ» ÆĶûÀ¸·Î ºÐ·ù µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥À» ½ÇÁ¦·Î üÇèÇÑ ÈÄ , ÀÐ¾î ¹Þ´Â´Ù°í ÀÌÇØ°¡ ºü¸£´Ù°í »ý°¢ÇÕ´Ï´Ù.
<%@
page contentType="text/html; charset=Shift_JIS"
session="true" import="java.net.*"
%> <% Cookie[] cookies; Cookie cookie; cookies =
request.getCookies(); cookie = null; if (cookies != null){ for (int i = 0; i < cookies.length;
i++){ cookie =
cookies[i]; if
(cookie.getName().equals("userdata")){break;} } String encodedUserData =
cookie.getValue(); String decodedUserData =
URLDecoder.decode(encodedUserData, "UTF-8"); cookie = new Cookie("userdata",
URLEncoder.encode(decodedUserData, "UTF-8")); cookie.setMaxAge(300); // give 5 minute to survive for the
cookie
response.addCookie(cookie); } %> <HTML> <HEAD> <TITLE>JavaScript
j2 platform equivalent URL encode/decode functions and their
test</TITLE> <META
HTTP-EQUIV="content-type" CONTENT="text/html;
charset=SHIFT_JIS"> </TITLE> <SCRIPT
LANGUAGE="JavaScript"> /* Function Equivalent to
URLEncoder.encode(String, "UTF-8") Copyright (C) 2002 Cresc
Corp. Version: 1.0 */ function
encodeURL(str){ var s0, i, s, u; s0 = ""; // encoded str for (i = 0; i < str.length; i++){ // scan the source s =
str.charAt(i); u = str.charCodeAt(i); // get unicode of the
char if (s == " "){s0 += "+";} // SP should be converted to
"+" else { if ( u == 0x2a || u == 0x2d || u ==
0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >=
0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <=
0x7a))){ // check for
escape s0 = s0 + s; // don't
escape } else { //
escape if ((u >= 0x0) && (u
<= 0x7f)){ // single byte
format s =
"0"+u.toString(16); s0 += "%"+
s.substr(s.length-2); } else if (u > 0x1fffff){ // quaternary byte format
(extended) s0 += "%" + (oxf0 + ((u
& 0x1c0000) >> 18)).toString(16); s0 += "%" + (0x80 + ((u
& 0x3f000) >> 12)).toString(16); s0 += "%" + (0x80 + ((u
& 0xfc0) >> 6)).toString(16); s0 += "%" + (0x80 + (u
& 0x3f)).toString(16); } else if (u > 0x7ff){ // triple byte
format s0 += "%" + (0xe0 + ((u
& 0xf000) >> 12)).toString(16); s0 += "%" + (0x80 + ((u
& 0xfc0) >> 6)).toString(16); s0 += "%" + (0x80 + (u
& 0x3f)).toString(16); } else { // double byte
format s0 += "%" + (0xc0 + ((u & 0x7c0)
>> 6)).toString(16); s0 += "%" + (0x80 + (u
& 0x3f)).toString(16); } } } } return s0; } /* Function Equivalent to
URLDecoder.decode(String, "UTF-8") Copyright (C) 2002 Cresc
Corp. Version: 1.0 */ function
decodeURL(str){ var s0, i, j, s, ss, u, n,
f; s0 = ""; // decoded
str for (i = 0; i < str.length; i++){ // scan the source str s =
str.charAt(i); if (s == "+"){s0 += " ";} // "+" should be changed to
SP else { if (s != "%"){s0 += s;} // add an unescaped
char else{ // escape sequence
decoding u = 0; // unicode of the
character f = 1; // escape flag, zero means end of
this sequence while (true)
{ ss = ""; // local str to parse as
int for (j = 0; j < 2;
j++ ) { // get two maximum hex
characters to parse sss =
str.charAt(++i); if (((sss >=
"0") && (sss <= "9")) || ((sss >= "a") && (sss <=
"f")) || ((sss >= "A") &&
(sss <= "F"))) { ss += sss; // if hex, add the hex
character } else {--i;
break;} // not a hex char., exit the
loop } n = parseInt(ss, 16); // parse the hex str as
byte if (n <= 0x7f){u = n; f
= 1;} // single byte
format if ((n >= 0xc0)
&& (n <= 0xdf)){u = n & 0x1f; f = 2;} // double byte format if ((n >= 0xe0)
&& (n <= 0xef)){u = n & 0x0f; f = 3;} // triple byte format if ((n >= 0xf0) && (n <=
0xf7)){u = n & 0x07; f = 4;} //
quaternary byte format (extended) if ((n >= 0x80)
&& (n <= 0xbf)){u = (u << 6) + (n & 0x3f); --f;} // not a first, shift and add 6 lower
bits if (f <= 1){break;} // end of the utf byte
sequence if (str.charAt(i + 1) ==
"%"){ i++ ;} // test
for the next shift byte else {break;} // abnormal, format
error } s0 += String.fromCharCode(u); // add the escaped
character } } } return s0; } /* Function to get cookie parameter value string
with specified name Copyright (C) 2002 Cresc
Corp. Version: 1.0 */ function
loadCookie(name) { var allcookies =
document.cookie; if (allcookies == "") return
""; var start = allcookies.indexOf(name +
"="); if (start == -1) return
""; start += name.length +
1; var end =
allcookies.indexOf(';',start); if (end == -1) end =
allcookies.length; return
decodeURL(allcookies.substring(start,end)); } /* Function to send the textarea data throuth
cookie Copyright (C) 2002 Cresc
Corp. Version: 1.0 */ function
sendThis(){
document.cookie="userdata="+encodeURL(document.inForm.text.value); //set data window.location.reload(); // and reload this
page } </SCRIPT> </HEAD> <BODY> JavaScript¿¡
ÀÇÇÑJ2Ç÷§Æû ȣȯURLencode ÇÔ¼ö¿ÍJSP¿¡ ÀÇÇÑ ±× Å×½ºÆ®<BR> (URLencode µÈ ÄíÅ°ÀÇ ÆĶó¹ÌÅ͸¦ °³ÀÔ½ÃŲ ¼ºê ·¿°úJavaScript»çÀÌÀÇ µ¥ÀÌÅÍÀÇ
±³È¯)<BR><BR> <%
if (cookies != null){ %> <DIV
STYLE="width: 50% word-break:break-all"> ¼¹ö°¡ ¹ÞÀº
ÄíÅ°(URLµðÄÚµå ÈÄ)£º<BR><% for (int i = 0; i < cookies.length;
i++){ %> À̸§=<%=
cookies[i].getName() %><BR> Ä¡=<%=
cookies[i].getValue() %><BR> ¡¡ (<%=
URLDecoder.decode(cookies[i].getValue(), "UTF-8")
%>)<BR> <% } } %> </DIV> <P
STYLE="width: 50%"> Ŭ¶óÀ̾ðÆ®°¡
¹ÞÀº ÄíÅ°(URLencode µÇ°í ÀÖ´Ù )£º<BR> <SCRIPT
LANGUAGE="JavaScript">
document.writeln(document.cookie); </SCRIPT> </P> <P
STYLE="width: 50%"> Ŭ¶óÀ̾ðÆ®
¼ö½ÅÇÑ ÄíÅ°¾ÈÀÇ µ¥ÀÌÅÍ ºÎºÐ£º<BR> <SCRIPT
LANGUAGE="JavaScript">
document.writeln(loadCookie("userdata")); </SCRIPT> </P> ¼¹ö¿¡
¼Û½ÅÇÏ´Â ÅؽºÆ®¸¦ ±âÀÔÇØ ÁÖ¼¼¿ä£º<BR> <FORM
NAME="inForm"> <TEXTAREA
ROWS="3" COLS="60" WRAP="soft"
NAME="text"></TEXTAREA><BR> <INPUT
TYPE="button" VALUE="ÄíÅ° ±â·Ï°ú ¼Û½Å" ONCLICK="sendThis()"> </FORM> </BODY> </HTML> |
ÀÌ»ó
[Ãâó] [Æß] JavaScript¿¡ ÀÖ¾î¼ÀÇURLencodeÀÇ Ã³¸®|ÀÛ¼ºÀÚ ¹ÚÁ¾º¹