CORE
HOME > JAVA > J2SE > CORE
2017.03.29 / 13:19

¾Ïȣȭ - ¹®ÀÚÀÎÄÚµù¹× ¹®ÀÚ¼Â(CharacterSet)

½ºÄÚ´Ù
Ãßõ ¼ö 237

====================================
¹®ÀÚÀÎÄÚµù¹× ¹®ÀÚ¼Â(CharacterSet)
====================================
1. ¹®ÀÚÀÎÄÚµù
ÄÚµåü°è
KSC 5601°ú Euc-krÀº °°Àº ÄÚµåü°è¸¦ »ç¿ëÇÑ´Ù.
ASCIIÄÚµå´Â ¿©´ü ºñÆ® Áß ÀÏ°ö ºñÆ®¸¸À» »ç¿ëÇÏ°í ±× ÀÌ¿ÜÀÇ ÄÚµåµéÀº
8(7bit) + 8(7bit) = 16(14bit)¸¦ »ç¿ëÇÑ´Ù.
ÀÎÅͳÝÀÇ ±¹Á¦È­°¡ ÃßÁøµÇ¸é¼­ US-ASCII ÀÌ¿ÜÀÇ ´Ù¸¥ ³ª¶ó ¹®ÀÚ·Î ÀÌ·ç¾îÁø
ÅؽºÆ®¹®ÀÚ¿­¿¡ ´ëÇÑ Àü¼Û Çʿ伺µµ »ý°å´Âµ¥, ¿µ¾î ÀÌ¿ÜÀÇ ¹®ÀÚ´Â 8¹ø° ÃÖ»óÀ§
ºñÆ® (MSB)¸¦ »ç¿ëÇÏ¿© Ç¥ÇöµÇ¸ç, µû¶ó¼­ 8ºñÆ®ÀÇ Àü¼ÛÀÌ ÇÊ¿äÇÑ °ÍÀÌ´Ù.
ÀÌ¿¡ µû¶ó 8ºñÆ®¸¦ 7ºñÆ® ¿µ¹® ASCII ÄÚµå·Î Ç¥ÇöÇÏ´Â ¹æ¹ý(ÀÎÄÚµù)°ú À̸¦
´Ù½Ã 8ºñÆ®·Î ¹Ù²Ù´Â ¹æ¹ý (µðÄÚµù)ÀÌ °í¾ÈµÇ¾ú½¿.
Ãß»óÀûÀÎ ±ÛÀÚ¼ÂÀ» ±¸Ã¼ÀûÀÎ bit-streamÀ¸·Î Ç¥±âÇÒ ¹æ¹ýÀ» ã¾Æ¾ß Çϸç,
±×·± ¹æ¹ýÀ¸·Î´Â EUC-KR, ISO-2022-KR, ISO-8859-1 µîÀÌ ÀÖ´Ù.
EUC-KR : Bell Laboratories¿¡¼­ È®Àå À¯´Ð½º ÄÚµå (Extended UNIX Code)¶ó ÇÏ¿©,
À¯´Ð½º »ó¿¡¼­ ¿µ¹®ÀÚ ÀÌ¿ÜÀÇ ¹®ÀÚµéÀ» Áö¿øÇÏ´Â ¹æ¹ýÀ¸·Î Á¦¾ÈµÇ¾ú½¿.
ISO-8859-1Àº µÎ °¡Áö Àǹ̷Π¾²ÀÓ. (Ãß»óÀûÀÎ) ¹®ÀÚ¼¼Æ®¸¦ ¶æÇϱ⵵ ÇÏ°í,
¹®ÀÚÀÎÄÚµùÀ» ¶æÇϱ⵵ ÇÑ´Ù. ¹Ì±¹ ¹× ¼­À¯·´ ÀϺο¡¼­´Â ISO-8859-1
ÀÎÄÚµùÀÌ Æø³Ð°Ô »ç¿ëµÇ°í ÀÖÀ¸¸ç, ¿ì¸®³ª¶ó¿¡¼­´Â EUC-KR ÀÎÄÚµùÀÌ
ÇöÀç Æø³Ð°Ô »ç¿ëµÇ°í ÀÖ´Ù.
ISO-2022-KR : ÇÑ±Û ¸ÞÀÏ Àü¼ÛÀ» À§ÇØ º°µµ·Î °í¾ÈµÈ 7ºñÆ® ÀÎÄÚµù ¹æ½Ä


2. ¹®ÀÚ¼¼Æ®
ÀÏÁ¤ ¸ñÀûÀ¸·Î »ç¿ëµÇ±â À§ÇÑ ¹®ÀÚµéÀÇ ¸ðÀÓ
KSC-5601 : Çѱۿ¡ ´ëÇÑ ±¹°¡Ç¥ÁØÄÚµå : 1987³â Çѱ¹°ø¾÷ÁøÈïû¿¡¼­ Á¦Á¤ 94*94
Çà·Ä¿¡ ÇѱÛ, ÇÑÀÚ ±×¸®°í Ư¼ö¹®ÀÚ¸¦ ¹èÄ¡ÇÑ Ãß»óÀûÀÎ ±ÛÀÚ¼ø¼­
KSC-5636Àº US-ASCIIÀÇ ¿ª½½·¡½¬°¡ \·Î Ç¥ÇöÇÑ °ÍÀÌ´Ù.
ISO-8859-1 : ¼­À¯·´ ¾ð¾îÀÇ Ç¥±â¿¡ ÇÊ¿äÇÑ US-ASCII¿¡ ¾ø´Â 94°³ÀÇ ±ÛÀÚÀÇ ¼øÂ÷Àû
³ª¿­ÀÓ
EUC-KR : KSC-5601°ú KSC-5636(US-ASCIIÀÇ Çѱ۹öÀü)ÀÇ 8ºñÆ® ¹®ÀÚÁýÇÕ AT&T
ÀÇ Extended Unix CharsetÀ¸·Î ÇÑ±Û Ç¥Çö¿¡ ÀÌ¿ë
ISO-2022-KR : Korean Mail Exchange Standard, Çѱ۸ÞÀÏÀ» Àü¼ÛÇϱâ À§ÇÑ
ÀÎÄÚµù ¹æ½Ä


3, ¼­ºí¸´¿¡¼­ÀÇ ÇÑ±Û Ã³¸®
URL Á¤º¸ÀÇ ÇѱÛó¸®
À¥ ºê¶ó¿ìÀú¿¡¼­ x-www-form-urlencoded ÀÎÄÚµùÀ» »ç¿ëÇÏ¿© ÇѱÛÀ»
Àü¼ÛÇÏ°Ô µÇ¸é ¼­ºí¸´¿¡´Â À߸øµÈ ÇѱÛÀÌ Àü´ÞµÈ´Ù.
¼­ºí¸´ ÇÁ·Î±×·¥¿¡¼­´Â ÇÑ±Û Ã³¸®¸¦ ÇØÁÖ¾î¾ßÁö ÇѱÛÀ» º¼ ¼ö ÀÖ½¿.
ÇѱÛÀÌ ±úÁö´Â ÀÌÀ¯´Â ºê¶ó¿ìÁ®¿Í ¼­ºí¸´ ÇÁ·Î±×·¥ÀÌ ¼­·Î´Ù¸¥ ÇÑ±Û Ä³¸¯ÅÍ
¼¼Æ®¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ¹ß»ý, Browser´Â ºê¶ó¿ìÁ®´Â 8859_1ÀÇ Ä³¸¯ÅÍ ¼¼Æ®¸¦
»ç¿ëÇϴµ¥ ¹ÝÇØ ¼­ºí¸´¿¡¼­´Â KSC5601À» »ç¿ëÇϱ⠶§¹®ÀÌ´Ù.

ÄÄÆÄÀϽà encoding¿É¼ÇÀ» 8859_1
(javac –encoding 8859_1 HelloWorld.java)
PrintWriter Ŭ·¡½º ÀÌ¿ë
OutputStreamWriter Ŭ·¡½º´Â »ý¼ºÀÚ¿¡¼­ ¹®ÀÚ¿­ÀÇ encodingŸÀÔÀ» Á¤ÀÇ
PrintWriter out = new PrintWriter(new OutputStreamWriter
(res.getOutputStream(),¡±KSC5601¡±),true);
¹®ÀÚÀÎÄÚµùÀ» ÁöÁ¤ÇÏ¿© À¥ºê¶ó¿ìÁ®¿¡ ÇÑ±Û Ãâ·Â
setContentType()¸Þ¼Òµå¸¦ »ç¿ë
res.setContentType(¡°text/html ; charset=euc-kr¡±)
getParameter µîÀ¸·Î °ªÀ» ¹ÞÀ»¶§´Â Çѱۺ¯È¯À» ÇؾßÇÑ´Ù.


-------------------------
¿¹Á¦:parameter¿¹Á¦
-------------------------
[parameter.html]
< html>
< head>
< title> Parameter viewer </title>
< /head><body>
< form method=get action=/servlet/ReqParameter>
¼º¸í1 : <input type=text name=name> <br>
¼º¸í2 : <input type=text name=name> <br>
¼º¸í3 : <input type=text name=name> <br>
ÁÖ¼Ò : <input type=text name=addr> <br>
ºñ¹Ð¹øÈ£ : <input type=password name=passwd> <br>
< input type=submit value=Àü¼Û name=submitbutton> <br>
< /form>
< /body>
< /html>


-----------------------
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ReqParameter extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/plain; charset=euc-kr");
PrintWriter out = res.getWriter();

//URLÀÇ ÁúÀÇ ½ºÆ®¸µÀ» ¹Ýȯ
out.println("QueryString --->" + req.getQueryString());
out.println("------------------------------------------------");
out.println(" ¾Æ·¡´Â Form¿¡¼­ ³Ñ¾î¿Â parameterÀÇ valueÀÔ´Ï´Ù...");
out.println("------------------------------------------------");
//HttpServletRequest·Î ³Ñ¾î¿Â parameterÀÇ À̸§À» ¹Ýȯ
Enumeration enum = req.getParameterNames();
while(enum.hasMoreElements()) {
String param = (String) enum.nextElement();
String values[] = req.getParameterValues(param);
if (values != null) {
for(int i=0; i < values.length; i++) {
//ÇÑ±Û Ã³¸®¸¦ À§ÇØ º¯È¯ ÇÔ¼ö Call
out.println(param + "[" + i + "] : " +Han(values[i]));
}
}
}
}

public static String Han(String str) throws UnsupportedEncodingException{
if (str == null) return null;
return new String(str.getBytes("8859_1"),"KSC5601");
}