¼Ò¼³°°ÀºJSP1ºÎ  4Àå Core of Servlet  07 ¼­ºí¸´¿¡¼­ ÇѱÛó¸®ÀÇ ¿ø¸®  

 

07 ¼­ºí¸´¿¡¼­ ÇѱÛó¸®ÀÇ ¿ø¸®

 

ÀÚ¹Ù¿¡¼­ »ç¿ëÇÏ´Â ÇѱÛÀº À¯´ÏÄÚµå ¹æ½ÄÀ» »ç¿ëÇÕ´Ï´Ù. UTF-16ÀÎÄÚµù ¹æ½ÄÀ¸·Î 2¹ÙÀÌÆ®¸¦ ÀÌ¿ëÇÏ¿© ÇϳªÀÇ ¹®ÀÚ¸¦ Ç¥ÇöÇÕ´Ï´Ù. ¹®ÀÚ¸¦ ¹ÙÀÌÆ® ±× ÀÚü·Î ¹Þ¾Æ µéÀÌÁö ¾Ê°í ¹®ÀÚ¸¦ ¹Þ¾Æ µéÀ̸é ÀÚ¹Ù¿¡¼­´Â ÀÚµ¿À¸·Î À¯´ÏÄÚµå Çü½ÄÀÇ ¹®ÀÚ¿­ÀÌ µË´Ï´Ù. ¹°·Ð, ÀÚ¹Ù¿¡¼­ »ç¿ëÇÏ´Â ÇÑ±Û ÀÎÄÚµù¹æ½ÄÀº À¯´ÏÄÚµå ¹æ½ÄÀÌÁö¸¸ ÀϹÝÀûÀÎ À¥¿¡¼­´Â ´Ù¸¥ ÇÑ±Û ÀÎÄÚµù ¹æ½ÄÀ» »ç¿ëÇÕ´Ï´Ù. À¥¿¡¼­ »ç¿ëÇÏ´Â ¹®ÀÚ¿­ ÀÎÄÚµù¹æ½ÄÀº KSC5601 °ú EUC_KR (euc-kr) ÀÌ ÀÖ½À´Ï´Ù. »ç½Ç °°Àº ¹æ½ÄÀÌÁö¸¸ ¹Ì¹¦ÇÑ Â÷À̰¡ ÀÖ½À´Ï´Ù. ±× Â÷À̸¦ »ìÆìº¸¸é ´ÙÀ½°ú °°½À´Ï´Ù.

 

ÇÑ±Û Ã³¸®ÀÇ Character Set

KSC5601, KSC5636

EUC_KR(euc-kr)

n         KSC5601

ÇÑ±Û ¿Ï¼ºÇü Ç¥ÁØ(ÇÑ±Û 2350ÀÚ Ç¥Çö)

2350ÀÚ ÀÌ¿ÜÀÇ ¹®ÀÚ ±úÁü

Çѱ¹°ø¾÷Ç¥ÁØ Á¤º¸Ã³¸®ºÐ¾ß(C)ÀÇ 5601¹ø Ç¥ÁؾÈ

n         KSC5636

¿µ¹®ÀÚ¿¡ ´ëÇÑ Ç¥ÁØ

Çѱ¹°ø¾÷Ç¥ÁØ Á¤º¸Ã³¸®ºÐ¾ß(C)ÀÇ 5636¹ø Ç¥ÁؾÈ

±âÁ¸ ASCII Code¿¡¼­ ¿ª½½·¡½Ã¸¦ \(¿ø)Ç¥½Ã ´ëü

Bell Laboratories¿¡¼­ È®ÀåµÈ À¯´Ð½º ÄÚµå Á¦¾È

À¯´Ð½º »ó¿¡¼­ ¿µ¹®ÀÚ ÀÌ¿ÜÀÇ ¹®ÀÚ¸¦ Áö¿øÇÏ´Â ¹æ¹ý

EUC-KR(Exetend UNIX Code)

n         Çѱ¹¾î¸¦ Ç¥ÇöÇÏ´Â ¹æ¹ý

¿µ¹®: KSC5636 »ç¿ë

ÇѱÛ: KSC5601 »ç¿ë(KS-C-5601-1987)

n         EUC_KR(euc-kr)

EUC_KR = KSC5601 + KSC5636

 

¼­ºí¸´¿¡¼­ ¹®ÀÚ¿­ÀÇ ÀÎÄÚµùÀº »ó´çÈ÷ º¹ÀâÇÑ °úÁ¤À» ¹â°Ô µË´Ï´Ù. ¾Æ·¡ ±×¸²Àº ±× °úÁ¤À» µµ½ÄÈ­ ÇÑ ±×¸²ÀÔ´Ï´Ù.

 

 

 

¿ì¼± ÇÑ±Û À¥ ºê¶ó¿ìÁ®ÀÇ ÇÑ±Û ¹æ½ÄÀº KSC5601 ¹æ½ÄÀÔ´Ï´Ù. ±×¸®°í À¥ ºê¶ó¿ìÁ®¿¡¼­ µ¥ÀÌÅͰ¡ Àü¼ÛµÉ ¶§ À¥¿¡¼­ Åë¿ëµÇ´Â ¡°x-www-form-urlencoded¡± Çü½ÄÀ¸·Î º¯È¯ÇÏ¿© Àü¼ÛÇÏ°Ô µË´Ï´Ù. Áï ´ÙÀ½°ú °°ÀÌ Àü¼ÛµË´Ï´Ù.

 

n        KSC5601 à À¥¿¡¼­ Åë¿ëµÇ´Â x-www-form-urlencoded Çü½ÄÀ¸·Î º¯È¯ÇÏ¿© Àü¼Û

 

ÇÏÁö¸¸ ¼­ºí¸´¿¡¼­´Â KSC5601¿¡¼­ À¥ ÀÎÄÚµùÀÌ µÇ¾ú´Ù°í »ý°¢ÇÏÁö ¾Ê½À´Ï´Ù. ÇѸ¶µð·Î ¿À·ùÁÒ. ¼­ºí¸´Àº ¶óƾ¾î Ç¥ÁØ ÀÎÄÚµù ¹æ½ÄÀÎ ISO-8859-1¹æ½Ä¿¡¼­ À¥ ÀÎÄÚµùµÇ¾ú´Ù°í °£ÁÖÇÏ¿© ÇѱÛÀ» ¹Þ¾Æ ³»°Ô µË´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ´ç¿¬È÷ ÇѱÛÀº ±úÁö°Ô µË´Ï´Ù. ½ÇÁ¦´Â KSC5601·Î ÀÎÄÚµù µÇ¾î Àֱ⠶§¹®ÀÌÁÒ.

 

n        ISO-8859-1 à À¥ ÀÎÄÚµù à À¯´ÏÄÚµå(Çѱ۱úÁü)

 

ÀÌ·² ¶§ÀÇ ÇØ°áÃ¥Àº ±úÁø À¯´ÏÄÚµå Çѱۿ¡¼­ ISO-8859-1 ¹ÙÀÌÆ® ¹è¿­À» ¾ò¾î ³»¾î ´Ù½Ã KSC5601·Î ¹Ù²Ù¾îÁÖ´Â ÀÛ¾÷À» ÇØ¼­ À¯´ÏÄÚµå·Î º¯È¯ ÇØ¾ß ÇÕ´Ï´Ù.

 

n        À¯´ÏÄÚµå(±úÁø ÇѱÛ) à ISO-8859-1 ¹ÙÀÌÆ®¹è¿­ ÃßÃâ à ¿ø·¡ÀÇ Æ÷¸ËÀÎ KSC5601 º¯È¯

 

ÀÌ·¸°Ô º¯È¯ µÈ KSC5601Àº Á¤È®ÇÑ ÇѱÛÀÌ µÇ¸ç ÀÚ¹Ù¿¡¼­ À¯´ÏÄÚµå Çü½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ¾à°£ º¹ÀâÇÏÁÒ.

 

±×¸®°í ÇѰ¡Áö ÁÖÀÇÇØ¾ß ÇÒ °ÍÀº ¼­ºí¸´¿¡¼­ ÇѱÛÀº Ŭ¶óÀÌ¾ðÆ®·Î Àü¼ÛÇϸé À¯´ÏÄڵ忡¼­ ÀÚµ¿À¸·Î ISO-8859-1Çü½ÄÀ¸·Î º¯È¯Çؼ­ Àü¼ÛÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·¸±â ¶§¹®¿¡ Ŭ¶óÀÌ¾ðÆ®°¡ ÇÑ±Û À¥ ºê¶ó¿ìÁ®¸¦ »ç¿ëÇÑ´Ù¸é ÇѱÛÀº ´ç¿¬È÷ ±úÁö°Ô µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ·² ¶© À¥ ºê¶ó¿ìÁ®°¡ ¾Ë ¼ö ÀÖ´Â KSC5601ÀÎÄÚµùÀ» »ç¿ëÇÏ´Â euc-kr ÀÎÄÚµùÀ¸·Î º¯È¯ÇÏ¿© Àü¼ÛÇØ¾ß ÇÕ´Ï´Ù.

 

[ÁÖÀÇ]

n        ¼­ºí¸´¿¡¼­ ÇѱÛÀ» Àü¼ÛÇÒ ¶§ euc-kr ÀÎÄÚµùÀ» »ç¿ëÇÏ¿© ÇѱÛÀÇ ±úÁüÀ» ¹æÁö

n        ¼³Á¤¹æ¹ý: request.setContentType(¡°text/html;charset=euc-kr¡±)

 

getParameter() ¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ¿© Ŭ¶óÀÌ¾ðÆ®°¡ Àü¼ÛÇÑ µ¥ÀÌÅ͸¦ ¹Þ¾Ò´Ù¸é ¿©·¯ºÐµéÀº ´ç¿¬È÷ ±úÁø ÇѱÛÀ̶ó°í »ý°¢ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ¹ÞÀº ÇѱÛÀº ISO-8859-1 ÀÇ Ç¥ÁØ byte·Î ¹Þ°í À̸¦ ´Ù½Ã KSC5601 ÀÎÄÚµùÀ¸·Î º¯È¯ÇØ¾ß ÇÕ´Ï´Ù. À̰ÍÀ» °¡´ÉÇÏ°Ô Çϴ Ŭ·¡½º´Â ¾Æ·¡ÀÇ HangulEncoderŬ·¡½ºÀÇ toKSC5601() ¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ½Ã¸é µË´Ï´Ù. ±×¸®°í ¿ªÀ¸·Î KSC5601 ÀÎÄÚµù¿¡¼­ ISO-8859-1 ÀÎÄÚµù ¹æ½ÄÀÇ ÇѱÛÀ» ¾ò°íÀÚ ÇÑ´Ù¸é to8859_1() ¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ½Ã¸é µË´Ï´Ù.

 

HangulEncoder.java

ÇÑ±Û EncodingÀ» º¯°æÇϴ Ŭ·¡½º

package org.jabook.util;
public class HangulEncoder{
    
public static String to8859_1(String ko){
        
if(ko==null){
            
return null;
        }
        
try{
            
return new String(ko.getBytes("KSC5601"),"8859_1");
        }
catch(Exception e){return ko;}
    }
    
public static String toKSC5601(String en){
        
if(en==null){
            
return null;
        }
        
try{
            
return new String(en.getBytes("8859_1"),"KSC5601");
        }
catch(Exception e){return en;}
    }
}

C:\jakarta\webapps\MySample\WEB-INF\classes\org\jabook\util>javac HangulEncoder.java

 

À§ÀÇ Å¬·¡½º¿¡¼­ »ç¿ëÇÑ µÎ°¡ÁöÀÇ Å« ±â´ÉÀ» º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ´ÙÀ½Àº ±úÁø À¯´ÏÄÚµå Çѱۿ¡¼­ ISO-8859-1 ¹ÙÀÌÆ®¸¦ ÃßÃâÇÏ¿© KSC5601 ÀÎÄÚµù ¹æ½ÄÀÇ ÇѱÛÀ» º¯È¯ÇÑ ÈÄ String Ŭ·¡½º·Î ¸¸µé¾î À¯´ÏÄÚµå Çü½ÄÀÇ Çѱ۷Πº¹¿øÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

 

n        new String(en.getBytes("8859_1"),"KSC5601");

 

±×¸®°í ´ÙÀ½Àº ±× ¿ª¹æÇâÀ» º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.

 

n        new String(ko.getBytes("KSC5601"),"8859_1");

 

À§ÀÇ HangulEncoder Ŭ·¡½º´Â ÀÌ Ã¥ Àü¹Ý¿¡ »ç¿ëÇϴ Ŭ·¡½ºÀ̱⠶§¹®¿¡ ÆÐŰÁöÇüÅ·Π¸¸µé¾î µÎµµ·Ï ÇϰڽÀ´Ï´Ù. ÆÐŰÁö ¸íÀ» ±â¾ïÇϽñ⠹ٶø´Ï´Ù.

 

n        [ÁÖÀÇ]

ÄÄÆÄÀÏ ÇÒ ¶§ –d ¿É¼ÇÀ¸·Î classes µð·ºÅ丮¿¡¼­ ¸ðµç ¼­ºí¸´ ÆÄÀÏÀ» ÄÄÆÄÀÏ ÇÏ½Ã¸é »ó°ü¾øÁö¸¸ ¸¸¾à ƯÁ¤ µð·ºÅ丮 ¾Æ·¡¿¡¼­ ÄÄÆÄÀÏÇÏ°Ô µÇ¸é HangulEncoder¸¦ ãÀ» ¼ö ¾ø°Ô µË´Ï´Ù. À̶§´Â ÇØ´ç classesµð·ºÅ丮 ÀÚü¸¦ classpath¿¡ Ãß°¡ÇϽà ¹Ù¶ø´Ï´Ù. ¸ðµç .java ÆÄÀÏÀ» classes µð·ºÅ丮¿¡ ³Ö¾î µÎ°í –d ¿É¼ÇÀ¸·Î ÆÐŰÁö¸¦ ÄÄÆÄÀÏÇÑ´Ù¸é »ó°ü¾øÁö¸¸ ÇÏÀ§¿¡¼­ ÆÐŰÁö¸¦ ¸¸µé°í ±× ¾È¿¡¼­ ÄÄÆÄÀÏ ÇÒ ¶§´Â ÇØ´ç Ŭ·¡½º¸¦ ãÁö ¸øÇÏ°Ô µË´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºJSP1ºÎ
ÀúÀÚ:ÃÖ¿µ°ü