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

¹®Àڼ°ú ÀÎÄÚµùÀÇ Á¤ÀÇ

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

¹®Àڼ°ú ÀÎÄÚµùÀÇ Á¤ÀÇ

  • ¹®Àڼ (charset, Character Set)
ÇϳªÀÇ ¾ð¾î±Ç¿¡¼­ »ç¿ëÇÏ´Â ¾ð¾î¸¦ Ç¥ÇöÇϱâ À§ÇÑ ¸ðµç ¹®ÀÚ(È°ÀÚ)ÀÇ ¸ðÀÓÀ» ¹®ÀÚ¼Â(charater set)À̶ó°í ÇÑ´Ù. ´Ù½Ã ¸»ÇÏ¸é ¿ì¸®°¡ ¾ê±âÇÏ´Â ¾ð¾î¸¦ Ã¥À¸·Î ÃâÆÇÇÒ ¶§ ÇÊ¿äÇÑ ¹®ÀÚ(È°ÀÚ)¸¦ ¸ðµÎ ¸ðÀº °ÍÀ̶ó°í »ý°¢ÇÏ¸é µÈ´Ù. Ãß°¡ÀûÀ¸·Î ºÎÈ£¿Í °ø¹é µî°ú °°Àº Ư¼ö ¹®ÀÚµµ ¹®Àڼ¿¡ Æ÷ÇԵȴÙ.
¿µ¾îÀÇ °æ¿ì ¾ËÆĺª ´ë¼Ò¹®ÀÚ¿Í Æ¯¼ö ¹®ÀÚ µîÀ¸·Î °£´ÜÇÏ°Ô ¹®ÀÚ¼ÂÀ» ±¸¼ºÇÒ ¼ö ÀÖÁö¸¸ ÇѱÛÀÇ °æ¿ì ÃâÆÇ¿¡¼­ °¡,³ª,´Ù µîÀ¸·Î ÃâÆÇÇÔÀ¸·Î ÈξÀ ´Ù¾çÇÑ ¹®ÀÚ¼ÂÀ» °¡Áö°í, ¶ÇÇÑ ÇÑÀÚ¸¦ º´ÇàÇؼ­ »ç¿ëÇÔÀ¸·Î ¹®ÀÚ¼ÂÀÇ ¹üÀ§´Â ´õ¿í ³Ð¾îÁø´Ù.
  • Ãß»óÀûÀÎ ±ÛÀÚ ¼ÂÀº ¿©·¯ °³ÀÇ ÀÎÄÚµùÀ» °¡Áú ¼ö ÀÖ´Ù.
  • MIME ¹®ÀÚ¼ÂÀº IANA¿¡¼­ Á¤ÀÇÇϸç ÀÎÅÍ³Ý ¹× XML ÆÄÀÏ¿¡¼­ »ç¿ëÇÑ´Ù.
  • ÀÎÄÚµù (encoding)
ÀÎÄÚµùÀº ¹®ÀÚ¼ÂÀ» ÄÄÇ»ÅÍ°¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ¹ÙÀÌÆ®¿Í ¸ÅÇÎÇÏ´Â ±ÔÄ¢ÀÌ´Ù. ¿¹¸¦ µé¸é ASCII Code¿¡¼­ A,B,C µîÀº ¹®ÀÚ¼ÂÀÌ°í A´Â ÄÚµå 65, B´Â ÄÚµå 66 µî ¹ÙÀÌÆ® ¼ø¼­¿Í ¸ÅÇÎÇÑ °ÍÀÌ ÀÎÄÚµùÀÌ´Ù. µû¶ó¼­ ¹®ÀÚ¼ÂÀ» ¾î¶»°Ô ¸ÅÇÎÇÏ´À³Ä¿¡ µû¶ó ÇϳªÀÇ ¹®ÀÚ¼ÂÀÌ ´Ù¾çÇÑ ÀÎÄÚµùÀ» °¡Áú ¼ö ÀÖ´Ù.
  • Ãß»óÀûÀÎ ¹®ÀÚ¼ÂÀ» ±¸Ã¼ÀûÀÎ bit-streamÀ¸·Î Ç¥±âÇÏ´Â ¹æ¹ý
  • ¿©·¯°¡Áö ¹®ÀÚ¼ÂÀ» µ¿½Ã¿¡ Ç¥½ÃÇÒ ¼ö ÀÖ´Ù.
  • ´ëºÎºÐÀÇ ÀÎÄÚµù¿¡¼­´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â´Ù.
  • ´ëÇѹα¹ ¹®ÀÚ¼Â(charater set)¿¡¼­ °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ÀÎÄÚµùÀº "UTF-8", "KSC5601", "ISO-8859-1" ÀÌ´Ù.
  • ¹®ÀÚ¼Â(ÀÎÄÚµù)ÀÇ ¿¹
  • ÇÑ±Û : 8bit KSC5601 (8bit EUC-KR, 7bit ISO-2022-KR, ISO-2022-Int)
  • ¿µ¹® : KSC5636, US-ASCII (µÑ °£ÀÇ Â÷ÀÌ´Â È­Æä ´ÜÀ§ »Ó)
  • ÇѱÛ+¿µ¹® : KSC5861 (EUC-KR), KSC5636 + KSC5601¸¦ ¸ðµÎ Æ÷ÇÔÇÑ´Ù.
  • À¯´ÏÄÚµå : 4byte Unicode < ISO-10646 UCS (ISO-8859-1, UTF-8, UTF-16)

¹®Àڼ°ú ÀÎÄÚµùÀº µ¿ÀÏÇÑ ¸íĪÀ» °¡Áú ¼ö ÀÖ¾î ¼­·Î È¥¿ëÇÏ¿© »ç¿ëµÇ´Â °æ¿ì°¡ ¸¹´Ù.
EUC-KRÀº ¿ø·¡ À¯´Ð½º¿ë Ç¥ÁØÀ̾ú´Âµ¥ ÀÎÅͳÝÀ¸·Î È®ÀåµÇ¾î »ç¿ëµÈ´Ù.
KSC5601Àº ÀÎÅͳݿ¡¼­ ¿øÈ°ÇÑ ÇѱÛ(¿Ï¼ºÇü) »ç¿ëÀ» À§ÇÏ¿© Á¤ÀÇµÈ Ç¥ÁØÀÌ´Ù.
EUC (Extended UNIX Code), UTF (UCS Transformation format)

±âº» ÀÎÄÚµù

  • Windows : ½Ã½ºÅÛ ¾ð¾î¿Í °ü·ÃµÈ ÄÚµå ÆäÀÌÁö¸¦ µû¸§
    • ¿µ¹® Windows´Â CP1252 ÀÎÄÚµùÀ» »ç¿ë
    • ÇÑ±Û Windows´Â MS949 ÀÎÄÚµùÀ» »ç¿ë
  • Unix : LANG ȯ°æ º¯¼ö·Î ÁöÁ¤µÈ ·ÎÄÉÀÏ¿¡ ÇØ´çÇÏ´Â ÀÎÄÚµù
    • Solaris´Â LANG ȯ°æ º¯¼ö°¡ ko, ko_KRÀÏ °æ¿ì EUC-KR ÀÎÄÚµùÀ» »ç¿ë
    • HP´Â LANG ȯ°æ º¯¼ö°¡ ko_KR, ko_KR.eucKRÀÏ °æ¿ì EUC-KR ÀÎÄÚµùÀ» »ç¿ë
    • Unix¿¡¼­ locale -a ¸í·ÉÀ» »ç¿ëÇÏ¿© LANG ȯ°æ º¯¼ö¿¡ ÁöÁ¤ °¡´ÉÇÑ ¹®ÀÚ¼ÂÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
  • HTML : ISO-8859-1¿Í ISO-10646
  • XML : UTF-8
  • À¥ ºê¶ó¿ìÁ® : ³»ºÎÀûÀ¸·Î ¸ðµÎ À¯´ÏÄÚµå·Î 󸮸¦ ÇÑ´Ù.
  • HTTP/1.0 : ISO-8859-1
  • HTTP (URL,URI) : US-ASCII, %hexadecimal_code, JavaScript escape() ÇÔ¼ö »ç¿ë
  • Java : À¯´ÏÄÚµå 2.0
  • Á÷·ÄÈ­µÈ Java Class : UTF-8
  • J2EE : ISO-8859-1
  • Oracle : UTF-8 (AL32UTF8), Çѱ¹¿¡¼­´Â KSC5601 (KO16KSC5601)




´Ù¾çÇÑ È¯°æ¿¡¼­ ÀÎÄÚµù ¼³Á¤

À¥ ºê¶ó¿ìÁ® ¼³Á¤

  1. "µµ±¸ -> ÀÎÅÍ³Ý ¿É¼Ç -> ¾ð¾î" ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù.
  2. ¿µ¾î[en]¿Í Çѱ¹¾î[ko]¸¦ Ãß°¡ÇÏ°í ¿øÇÏ´Â ¾ð¾î¸¦ °¡Àå »ó´Ü¿¡ À§Ä¡ÇÑ´Ù.

JVM ¼³Á¤

  • ÀϹÝÀûÀ¸·Î LANG ȯ°æ º¯¼ö¸¦ ¼³Á¤ÇØ ÁÖ¸é ÀÚµ¿À¸·Î ¼³Á¤ÀÌ µÈ´Ù.
locale -a                               Solaria unix ¸í·É¾î·Î Áö¿ø °¡´ÉÇÑ encodingÀ» È®ÀÎÇÑ´Ù.
env LANG ko csh¿¡¼­ EncodingÀ» ¼³Á¤ÇÑ´Ù. (KSC5601, EUC-KR)
LANG=ko ksh¿¡¼­ EncodingÀ» ¼³Á¤ÇÑ´Ù. (KSC5601, EUC-KR)
  • JVM ¿É¼Ç ¼³Á¤ (UTF-8, ISO-8859-1, KSC5601)
-Dfile.encoding=8859_1                  Çʼö Ç׸ñ
-Dfile.client.encoding=8859_1
-Dclient.encoding.override=8859_1 JVM ¹öÀü¿¡ µû¶ó (»ç¿ë¾ÈÇÔ)
  • JSP¸¦ »ç¿ëÇÏ¿© JVM ¿É¼Ç È®ÀÎ (encoding.jsp)
file.encoding = <%= System.getProperty("file.encoding") %><br>
file.client.encoding = <%= System.getProperty("file.client.encoding") %><br>
client.encoding.override = <%= System.getProperty("client.encoding.override") %><br>

HTML ¼³Á¤

HTML ÆÄÀÏÀ» UTF-8·Î ¸¸µé¾î ÀúÀåÇÑ´Ù.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

XML ¼³Á¤

XML ÆÄÀÏÀ» UTF-8·Î ¸¸µé¾î ÀúÀåÇÑ´Ù.

<?xml version="1.0" encoding="UTF-8" ?>

JSP ¼³Á¤

JSP ÆÄÀÏÀ» UTF-8·Î ¸¸µé¾î ÀúÀåÇÑ´Ù.

<%@ page pageEncoding="UTF-8" %>
<%@ page contentType="text/html;charset=UTF-8" %>

Servlet ¼³Á¤

HTTP ¿äûÀÇ ÀÎÄÚµù ÁöÁ¤

request.setCharacterEncoding("UTF-8");

HTTP ÀÀ´äÀÇ ÀÎÄÚµù ÁöÁ¤

response.setContentType("text/html; charset=UTF-8");

web.xml ¼³Á¤

<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>

Default Oracle Database ¹®ÀÚ¼Â

  • Default Oracle Database ¹®Àڼ : UTF-8 (AL32UTF8), Çѱ¹¿¡¼­´Â KSC5601 (KO16KSC5601)
  • AL32UTF8, KO16KSC5601 (KSC5601), WE8ISO8859P1 (8859_1)
  • Default Oracle Database ¹®Àڼ ȮÀÎ ¹æ¹ý
sqlplus system/manager

select parameter || ' : ' || value parameter_value
from NLS_DATABASE_PARAMETERS
where parameter = 'NLS_CHARACTERSET'
or parameter = 'NLS_NCHAR_CHARACTERSET';

select name || ' : ' || substr(value$, 1, 40) parameter_value
from sys.props$
where name = 'NLS_CHARACTERSET';

select parameter || ' : ' || value parameter_value
from NLS_INSTANCE_PARAMETERS, V$NLS_PARAMETERS, NLS_SESSION_PARAMETERS;
  • Oracle Database ¹®Àڼ º¯°æ ¹æ¹ý
ȯ°æ º¯¼ö ¶Ç´Â %ORACLE_HOME%/dbs/init[SID].ora À» ¼³Á¤ÇÑ´Ù.
NLS_LANG='American_America.Ko16ksc5601'
ORA_NLS33='$ORACLE_HOME/ocommon/nls/admin/data'
NLS_DATE_FORMAT='YYYY-MM-DD'
  • DriverManager¿¡¼­ ¹®Àڼ ¼³Á¤ ¹æ¹ý
java.util.Properties props = new java.util.Properties();
props.put("charSet", "KSC5601" );
DriverManager.getConnection(dbUrl, props);