http://www.kristalinfo.com 


À¯´ÏÄÚµå(Unicode)¿Í À¯´ÏÄÚµå ÀÎÄÚµù

¿ø·¡ À¯´ÏÄڵ忡 °üÇÑ °³°ýÀûÀÎ ³»¿ëÀ» ´ãÀº ¹®¼­´Â ¸¸µéÁö ¾ÊÀ» ÀÛÁ¤À̾ú½À´Ï´Ù. ±×·±µ¥, À¯´ÏÄڵ带 ó¸®ÇÏ´Â ºÎºÐ¿¡ ´ëÇÑ ÀÛ¾÷À» ÁøÇàÇÏ´Ùº¸´Ï ¿ë¾î³ª ÀÎÄÚµù ¹æ½Ä µî¿¡ ´ëÇØ È¥µ¿ÀÌ µÇ´Â ºÎºÐÀÌ ³Ê¹« ¸¹±º¿ä. Á¦ ÀÚ½ÅÀ» À§Çؼ­µµ À¯´ÏÄڵ忡 ´ëÇÑ Á¤¸®¸¦ ÇÒ ÇÊ¿ä°¡ ÀÖÀ» µíÇÏ¿© ÀÌ ¹®¼­¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ ¹®¼­¿¡¼­´Â À¯´ÏÄÚµåÀÇ ±âº» ±¸¼º ¹× ÀÎÄÚµù ¹æ½Ä¿¡ ´ëÇØ ºñ±³Àû ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÒ °ÍÀÔ´Ï´Ù. ¼º°Ý ±ÞÇϽŠºÐÀ̶ó¸é Unicode ConsortiumÀÌ Á¦°øÇÏ´Â Äڵ尣 º¯È¯ ¼Ò½º(C ¾ð¾î)¸¦ ¹Ù·Î º¸½Ã´Â °Ô ´õ µµ¿òÀÌ µÉ ¼öµµ ÀÖ°Ú±º¿ä :-)

Â÷·Ê

    1. À¯´ÏÄÚµå ¾ß»ç (¾Æ¸¶µµ ÀÌ·¨À» °ÍÀÔ´Ï´Ù)
    2. À¯´ÏÄÚµåÀÇ ±¸Á¶
    3. À¯´ÏÄÚµå 3.1¿¡ Á¤ÀÇµÈ ¾ð¾î ¿µ¿ª
    4. À¯´ÏÄÚµå ¿ë¾îÀÇ ÀÌÇØ
    5. À¯´ÏÄÚµå ÀÎÄÚµù
      1. UTF-8 ÀÎÄÚµù (8 ºñÆ®)
      2. UTF-16 ÀÎÄÚµù (16 ºñÆ®)
      3. UTF-32 ÀÎÄÚµù (32 ºñÆ®)
      4. º¸Ãæ¾ð¾îÆÇ¿¡ ´ëÇÑ UTF-32¿Í UTF-16ÀÇ ÀÎÄÚµù
      5. UTF-16°ú UTF-8ÀÇ ´ëÇàÄÚµå ÀÎÄÚµù¿¡ °üÇÑ ¿ÀÇØ
    6. ±âŸ
    7. Âü°í¹®Çå

À¯´ÏÄÚµå ¾ß»ç (¾Æ¸¶µµ ÀÌ·¨À» °ÍÀÔ´Ï´Ù)

°ÅÀÇ ¸ðµç ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ »ç¿ëÇÏ´Â µ¥ÀÌŸ ±âº»ÇüÀ¸·Î char°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀÌ 8°³ÀÇ ºñÆ®, Áï 1¹ÙÀÌÆ®·Î ÀÌ·ç¾îÁ® ÀÖ´Ù´Â °ÍÀº ¸ðµÎ ¾Ë°í °è½ÃÁÒ? ¿Ö ÇÏÇÊ 8ºñÆ®¿´À»±î¿ä? ´ç½ÃÀÇ ¸Þ¸ð¸® »ç¿ëȯ°æÀ̶ó´øÁö(Áö±Ý¿¡ ºñÇÏ¸é ¹«Áö¹«ÁöÇÏ°Ô ¿­¾ÇÇßÀ» °Ì´Ï´Ù), CPU ¿¬»ê¼Óµµ ¶§¹®À̶ó´øÁö(¾Ö´Ï¾ÇÀÇ °æ¿ì Æù³ëÀ̸¸º¸´Ù °è»ê¼Óµµ°¡ ´À·È´Ù´Â À̾߱Ⱑ ÀÖ½À´Ï´Ù) ÀÌ·± ÀÌÀ¯µé ¶§¹®À̾úÀ» ±î¿ä? °¡Àå ±Ã±ØÀûÀÎ ¿øÀÎÀº ÄÄÇ»Å͸¦ ¸¸µç »ç¶÷µé¿¡°Ô À־ 8ºñÆ®(½ÇÁ¦·Î´Â 7ºñÆ®)¸é ÀڽŵéÀÇ ¾ð¾î(¿µ¾î)¸¦ ¸ðµÎ Ç¥ÇöÇÒ ¼ö ÀÖ¾ú´Ù´Â µ¥ ÀÖÀ» °ÍÀÔ´Ï´Ù. Áï 7ºñÆ®À̸é 27(128)°³ÀÇ Äڵ带 Ç¥ÇöÇÒ ¼ö Àִµ¥, 26x2(¾ËÆĺª ´ë¼Ò¹®ÀÚ) + 10(¼ýÀÚ) + Ư¼ö¹®ÀÚ + ÅëÁ¦¹®ÀÚ µîµîÀ» ¸ðµÎ ÇÕÃÄ 128°³ÀÌÇϷΠǥÇöÀÌ °¡´ÉÇÕ´Ï´Ù.

¼¼»ó ¸ðµç »ç¶÷µéÀÌ ¿µ¾î¸¸ ¾´´Ù¸é Unicode¸¦ ¸¸µé°Ú´Ù´Â »ý°¢À» ¾Æ¹«µµ ÇÏÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù(Èʳ¯ ¿Ü°èÀεéÀÇ ¾ð¾î¸¦ ¼ö¿ëÇÑ´Ù¸é ¸ð¸¦±î...). 1¹ÙÀÌÆ®·Î ¸ðµç ¹®ÀÚ¸¦ Ç¥ÇöÇÒ ¼ö ¾ø´Â ¾ð¾î¸¦ »ç¿ëÇÏ´Â ±¹°¡¿¡¼­´Â °¢°¢ Àڽŵ鸸ÀÇ ÀÎÄÚµù ¹æ¹ýÀ¸·Î ÀÌ¿ëÇÏ¿© ¹®ÀÚ¸¦ Ç¥ÇöÇØ ¿Ô½À´Ï´Ù. Çѱ¹ÀÇ °æ¿ì KSC5601 Ç¥ÁØ(¿Ï¼ºÇü)ÀÌ ´ëÇ¥ÀûÀÌÁÒ. ±×·¯´Ù º¸´Ï ÇѱÛ, ÇÑÀÚ, ÀϺ»¾î µîÀ» ¼¯¾î¾µ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¹¦¿¬Çß¾ú³ª º¾´Ï´Ù(Á¦ÇÑÀûÀ̳ª¸¶ °¡´ÉÇϱä ÇÕ´Ï´Ù¸¸). ±×·¡¼­ ¼ÒÇÁÆ®¿þ¾î ¾÷üµéÀÌ »ý°¢ÇÑ °ÍÀÌ "±×·¯¸é ¼¼°èÀÇ ¸ðµç ¹®ÀÚ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â ÄÚµå ü°è¸¦ ¸¸µéÀÚ!"¶ó°í Çؼ­ ¸¸µé¾îÁö±â ½ÃÀÛÇÑ °Ô UniCodeÀÔ´Ï´Ù.

¼¼»ó¿¡ Á¸ÀçÇÏ´Â ¸ðµç ¹®ÀÚÀÇ ¼ö°¡ 216(65,536)°³ ÀÌÇ϶ó¸é ¾î¶»°Ô µÉ±î¿ä? char¸¦ 16ºñÆ®·Î Áõ°¡½ÃÅ°¸é °£´ÜÇÏ°Ô ÇØ°áµÇ°ÚÁÒ? óÀ½¿¡´Â ´Ùµé ±×·¸°Ô »ý°¢Çß³ª º¾´Ï´Ù. À¯·´°ú °°ÀÌ ¿µ¾î ¾ËÆĺª ¾²´Â ÀÚÀßÇÑ ¾ð¾îµéÀÇ °æ¿ì ¸î¹éÀÚ¸é µÉÅ×°í, Çѱ۵µ 1¸¸ÀÚ Á¶±Ý ³Ñ°í, ÇÑÀÚµµ 2¸¸ÀÚ Á¶±Ý ³Ñ°Ô ÁÖ¸é µÉ °Í °°°í... ¸ðµÎ ÇÕÃĵµ 6¸¸ÀÚµµ ¾ÈµÇ°Ú³×... ±×·¨³ª º¾´Ï´Ù. ±×·¡¼­ À¯´ÏÄÚµå´Â 16ºñÆ®ÀÇ °ø°£¿¡ ¸ðµç ¹®ÀÚ¸¦ Áý¾î³ÖÀ¸·Á°í Çß½À´Ï´Ù. ÀÌ 16ºñÆ® ¿µ¿ªÀ» ±âº»´ÙÁß¾ð¾îÆÇ(BMP, Basic Multilingual Plane)À̶ó°í ºÎ¸¨´Ï´Ù. Unicode 3.0¹öÀü±îÁö´Â ¿©±â¿¡¸¸ ¹®ÀÚ Äڵ尡 ºÎ¿©µÇ¾î ÀÖ¾ú½À´Ï´Ù.

¼¼»óÀÏÀ̶õ ±×·¸°Ô ¸¸¸¸Ä¡ ¾ÊÁÒ... ÇÑÁßÀÏ¿¡¼­ °í¹®¼­¸¦ ´Ù·ç´Â »ç¶÷µéµµ ÄÄÇ»Å͸¦ »ç¿ëÇØ¾ß µÇÁö ¾Ê°Ú½À´Ï±î? ¿ì¸®¸» °í¾î´Â ¾î¶»°Ô Ç¥ÇöÇÏ°í, Áö±ÝÀº »ç¿ëµÇÁö ¾Ê´Â ¿¾ ÇÑÀÚ´Â ¶Ç ¾î¶»°Ô Ç϶õ ¸»ÀԴϱî? »õ·Î¿î ÀÎÄÚµù ¹æ½ÄÀ» º°µµ·Î ¸¸µé¾î¼­ »ç¿ëÇÒ±î¿ä? ÀÌ·¸°Ô µÇ¸é À¯´ÏÄÚµå¶ó´Â °Ô Àǹ̰¡ ¾ø¾îÁú °ÍÀÔ´Ï´Ù. ±×·¡¼­ À¯´ÏÄÚµå 3.0ºÎÅÍ º¸Ãæ¾ð¾îÆÇ(Supplementary Planes)À» Á¤ÀÇÇÏ¿´½À´Ï´Ù. À̸¦ À§ÇØ BMPÀÇ 2,048ÀÚ¸¦ ´ëÇàÄÚµå ¿µ¿ª(Surrogates)À¸·Î ÇÒ´çÇÏ°í ÀÌÁß 1,024ÀÚ¸¦ »óÀ§´ëÇà(high surrogates), 1,024ÀÚ¸¦ ÇÏÀ§´ëÇà(low surrogates)À¸·Î Á¤ÀÇÇÏ¿© ÀÌ µÑÀÇ Á¶ÇÕÀ¸·Î ´Ù½Ã 1¹é¸¸¿©ÀÚÀÇ - 1024x1024=1048576 - ¹®ÀÚ¸¦ Ãß°¡·Î Á¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´½À´Ï´Ù. À¯´ÏÄÚµå 3.1ºÎÅÍ´Â ½ÇÁ¦·Î ÀÌ ¿µ¿ª¿¡ ¹®ÀÚ¸¦ Á¤ÀÇÇß½À´Ï´Ù. °¡Àå Å©°Ô ÇÒ´ç ¹ÞÀº °ÍÀº ¿ª½Ã ÇÑÀÚ·Î 4¸¸¿©ÀÚ°¡ Ãß°¡·Î Á¤ÀǵǾú½À´Ï´Ù.

ÀÌ·¯ÇÑ ¼¼°èÇ¥ÁØÄڵ带 ¸¸µé·Á´Â ¿òÁ÷ÀÓÀº ¼ÒÇÁÆ®¿þ¾î ¾÷üµéÀÇ ¿¬ÇÕÀÎ À¯´ÏÄÚµå ÄÁ¼Ò½Ã¾ö¿Ü¿¡µµ ÀÖ¾ú½À´Ï´Ù. ¼¼°èÇ¥Áرⱸ(ISO)°¡ ¹Ù·Î ÀÌ ¿òÁ÷ÀÓÀÇ ÁÖü¿´´Âµ¥, ´ÙÇེ·´°Ôµµ µÎ ´Üü°¡ ¼­·Î ÇÕÀÇÇÏ¿© 1991³âÀÌÈÄ·Î µ¿ÀÏÇÑ Ç¥ÁØÀ» ¸¸µé°í ÀÖ½À´Ï´Ù. À¯´ÏÄÚµå Ç¥ÁØ°ú µ¿ÀÏÇÑ ¼¼°èÇ¥ÁرⱸÀÇ Ç¥ÁؾÈÀº ISO/IEC 10646À¸·Î ¸í¸íµÇ¾ú½À´Ï´Ù. µÎ Ç¥ÁØÀÌ ³»¿ëÀº µ¿ÀÏÇÏÁö¸¸ »ç¿ëÇÏ´Â ¿ë¾î³ª ³í¸®ÀûÀÎ ¼³¸íÀÌ ¾à°£ ´Ù¸£±â ¶§¹®¿¡ È¥µ¿½º·¯¿ï ¶§µµ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯¶§¹®¿¡ Á¦°¡ ÀÌ ¹®¼­¸¦ ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù :-)

 

À¯´ÏÄÚµå 3.1¿¡ Á¤ÀÇµÈ ¾ð¾î ¿µ¿ª (List of block names for Unicode Standard 3.1)

¹üÀ§ ¾ð¾î ¼³¸í

À¯´ÏÄÚµåÀÇ ±¸Á¶

ÀÌÁ¦´Â À¯´ÏÄÚµåÀÇ ±¸Á¶¿¡ ´ëÇØ ´ë°­ °¨À» ÀâÀ¸¼ÌÀ» ÁÙ ¾Ð´Ï´Ù. À¯´ÏÄÚµåÀÇ ±¸Á¶´Â Å©°Ô 17°³(1°³ÀÇ ±âº»¾ð¾îÆÇ(BMP)¿Í 16°³ÀÇ º¸Ãæ¾ð¾îÆÇ)ÀÇ ¾ð¾îÆÇÀ¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. °¢ ¾ð¾îÆÇÀº 216, Áï 65,536°³ÀÇ ¹®ÀÚ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸´Ï±î À¯´ÏÄڵ忡¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¹®ÀÚÀÇ ¼ö´Â 17x65,536=114112°³ÀÔ´Ï´Ù. ÇÏÁö¸¸ ´ëÇàÄڵ念¿ª(Surrogates) 2048°³¸¦ Á¦¿ÜÇØ¾ß ÇÏ´Ï±î ½ÇÁ¦·Î´Â 1112064°³ÀÇ ¹®ÀÚ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ°Ú±º¿ä. Unicode 3.1 Ç¥ÁØ¿¡¼­ °¢ ¾ð¾îÆÇÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ½À´Ï´Ù.

Ç¥. Unicode 3.1ÀÇ °¢ ¾ð¾îÆÇ Á¤ÀÇ
¾ð¾îÆÇUCS4 ¿µ¿ª À̸§¹®ÀÚ¼ö

À¯´ÏÄÚµå Ç¥ÁØ 3.0¿¡¼­´Â 49,194 ¹®ÀÚ°¡ Á¤ÀǵǾú°í À̵éÀº ¸ðµÎ BMP¿¡ ÇÑÁ¤µÇ¾î Á¤ÀǵǾúÀ¸³ª, 3.1¿¡¼­´Â BMP¿¡ 2°³ÀÇ ¹®ÀÚ¸¦ Ãß°¡ÇÏ°í, º¸Ãæ¾ð¾îÆÇ¿¡ 44,944°³ÀÇ ¹®ÀÚ¸¦ Ãß°¡ÇÏ¿´½À´Ï´Ù. »õ·Î Ãß°¡µÈ ¹®ÀÚµéÀº À½Ç¥, °í´ë¹®ÀÚ, ÇÑÀÚ(CJK Ideographic Extension B) µîÀÔ´Ï´Ù.

Á¦ 15, 16 ¾ð¾îÆÇ¿¡ ´ëÇÑ ¼³¸íÀÌ Á¶±Ý ÇÊ¿äÇÒ µí ÇÕ´Ï´Ù. ÀÌ µÎ°³ÀÇ ¾ð¾îÆÇÀº °³Àλç¿ë(Private Use)·Î ÁöÁ¤µÇ¾ú½À´Ï´Ù. °³¹ßÀڵ鿡°Ô´Â ÀÏÁ¾ÀÇ º¸³Ê½º¶ó°í ¸»ÇÏ´Â »ç¶÷µéµµ ÀÖ±º¿ä. ¾î·´ø ÀÌ µÎ ¾ð¾îÆÇÀº »óÀ§´ëÇàÄÚµåÁß ¸¶Áö¸· 128°³ ÄÚµå¿Í ÇÏÀ§´ëÇàÄÚµåÀÇ Á¶ÇÕÀ¸·Î ÁöÁ¤µË´Ï´Ù(UTF-16 ÀÎÄÚµùÀÇ °æ¿ì). ÀÌ ¶§¹®ÀÎÁö À¯´ÏÄÚµå 3.1¿¡¼­´Â U+DB80 ~ U+DBFF ¿µ¿ªÀ» º°µµ·Î ºÐ¸®ÇÏ¿© High Private Use Surrogates¶ó°í À̸§À» ºÙ¿´´õ±º¿ä.

2002³â 1¿ù¿¡ Unicode Standart 3.2 º£Å¸ÆÇÀÌ ¹ßÇ¥µÇ¾ú½À´Ï´Ù. 3.2¹öÀüÀÌ °íÁ¤µÇ´Â ´ë·Î ÀÌ ¹®¼­¸¦ °»½ÅÇÒ ¿¹Á¤ÀÔ´Ï´Ù.

À¯´ÏÄÚµå ¿ë¾îÀÇ ÀÌÇØ

À§ÀÇ Ç¥¿¡¼­ ¶á±Ý¾øÀÌ UCS4¶ó´Â ¿ë¾î¸¦ »ç¿ëÇß½À´Ï´Ù. À¯´ÏÄÚµå °ü·Ã ¹®¼­¸¦ Àдٺ¸¸é °¡Àå ¸¹ÀÌ ¸¶ÁÖÄ¡´Â ¿ë¾îµéÀÌ UCS2, UCS4, UTF8, UTF16, UTF32 µî°ú °°Àº ´Ü¾îµéÀÔ´Ï´Ù. Á¦°¡ ¾ÆÁÖ ¸¹ÀÌ Çò°¥·È´ø °ü°è·Î ¿ë¾îµé¿¡ ´ëÇÑ Á¤¸®¸¦ °£´ÜÇÏ°Ô ÇÒ ±î ÇÕ´Ï´Ù.

  • ±âº»¾ð¾îÆÇ, BMP
    BMP´Â Basic Mulitilingual PlaneÀÇ ¾àÀÚÀÔ´Ï´Ù. À¯´ÏÄÚµåÀÇ Ã¹ 65,536°³ÀÇ Äڵ带 ÀǹÌÇÕ´Ï´Ù.
  • ¾ð¾îÆÇ, Plane
    256x256 Áï 65,536 °³¾¿ÀÇ ÄÚµå ¹­À½À» À̸¨´Ï´Ù. À¯´ÏÄڵ忡¼­´Â ÇöÀç 17°³ÀÇ ¾ð¾îÆÇÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµÎ ±×·ì 00¿¡ Æ÷ÇԵ˴ϴÙ.
  • ¾ð¾îÆÇ ±×·ì, Group
    256°³¾¿ÀÇ ¾ð¾îÆÇÀ» ¹­¾î ÇϳªÀÇ ±×·ìÀ¸·Î ¸í¸íÇÕ´Ï´Ù. À¯´ÏÄÚµåÀÇ 17°³ ¾ð¾îÆÇÀº ¸ðµÎ Group 00¿¡ ÀÖ½À´Ï´Ù. À¯´ÏÄÚµå´Â 17°³ÀÇ ¾ð¾îÆÇ¿¡ ÇÑÁ¤µÇ¾î Á¤Àǵ˴ϴÙ. ¹Ý¸é ISO Ç¥ÁØ(UCS-4)¿¡¼­´Â ¸ðµÎ 128°³ÀÇ ¾ð¾îÆÇ ±×·ìÀÌ Á¤ÀÇµÉ ¼ö ÀÖ½À´Ï´Ù.
    • 1 Plane = 65,536 code points
    • 1 Group = 256 planes = 256x65,536 = 16,777,216 code points
    • UCS-4 = 128 groups = 128x16,777,216 = 2,147,483,648 code points
  • ÀÎÄÚµù, Encoding
    ¹®ÀÚÁýÇÕÀ» Ç¥ÇöÇÏ´Â ¹æ½ÄÀ» ¸»ÇÕ´Ï´Ù. À¯´ÏÄÚµå´Â ÄÚµåü°è ¶Ç´Â ¹®ÀÚÁýÇÕÀ» ¸í¸íÇÏ´Â °ÍÀ̸ç À̸¦ Ç¥ÇöÇϱâ À§Çؼ­´Â UTF-8, UTF-16, UTF-32 µî°ú °°Àº ÀÎÄÚµùÀÌ ÇÊ¿äÇÕ´Ï´Ù.
  • UCS-2: Universal Character Set 2(octets)
    Á»´õ Á¤È®ÇÏ°Ô´Â Universal Multipe-Octet Coded Character Set 2ÀÔ´Ï´Ù. ISO/IEC 10646ÀÇ ¿ë¾î·Î BMPÀÇ 65,536 Äڵ带 Á¤ÀÇÇϸç, 2¹ÙÀÌÆ®·Î Ç¥ÇöµË´Ï´Ù. 1°³ÀÇ ¾ð¾îÆÇ, Áï BMP¸¸ÀÌ ÀÌ¿¡ ÇØ´çÇÕ´Ï´Ù. UCS-2´Â ÀÎÄÚµù ¹æ¹ýÀÌ ¾Æ´Ï¸ç ¹®ÀÚÄÚµå ÀÚüÀÔ´Ï´Ù. ÀÎÄÚµùÀ¸·Î ºÁµµ ¹«¹æÇÏ°Ú±º¿ä. ¿©±â¼­ octetÀ̶ó´Â ¿ë¾î¸¦ »ç¿ëÇߴµ¥ ÀÌ ¿ë¾î´Â ISOÂÊ¿¡¼­ »ç¿ëÇÏ´Â ¿ë¾î·Î, À¯´ÏÄÚµå Áø¿µ¿¡¼­ »ç¿ëÇÏ´Â ¹ÙÀÌÆ®¿Í °°Àº ¶æÀÔ´Ï´Ù
  • UCS-4: Universal Character Set 4(octets)
    ISO/IEC 10646ÀÇ ¿ë¾î·Î 4¹ÙÀÌÆ®·Î Ç¥ÇöµË´Ï´Ù. ¸ðµÎ 128°³ÀÇ ¾ð¾îÆÇ ±×·ì, Áï 128*256 ¾ð¾îÆÇ = 32,768 ¾ð¾îÆÇÀ» Á¤ÀÇÇÕ´Ï´Ù. ÀÌ´Â ´ë·« 231 = 2,147,483,648°³ÀÇ Äڵ忡 ÇØ´çÇÕ´Ï´Ù. UCS-4´Â ÀÎÄÚµù ¹æ¹ýÀÌ ¾Æ´Ï¸ç ¹®ÀÚÄÚµå ÀÚüÀÔ´Ï´Ù.
  • UTF-8: UCS Transformation Format, 8-bit form
    Unicode Ç¥ÁØÀÇ ÀÎÄÚµù ¹æ½ÄÁßÀÇ ÇϳªÀÔ´Ï´Ù. Ç¥ÁØ¿¡¼­´Â 17°³ ¾ð¾îÆÇÀÇ ¹®ÀÚ¸¸À» Ç¥ÇöÇÒ ¼ö ÀÖÀ¸³ª ±â¼úÀûÀ¸·Î´Â UCS-4 Àü¿µ¿ªÀÇ ¹®ÀÚ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®ÀÚ¿¡ µû¶ó 1 ~ 4(¶Ç´Â 6) ¹ÙÀÌÆ®·Î Ç¥ÇöµË´Ï´Ù.
  • UTF-16: UCS Transformation Format, 16-bit form
    À¯´ÏÄÚµå 3.0¿¡¼­´Â 16À» 16ºñÆ®·Î Çؼ®ÇÑ °ÍÀÌ ¾Æ´Ï¶ó, ±×·ì 00ÀÇ 16°³ ¾ð¾îÆÇÀ̶ó°í ½á ³õ¾Ò±º¿ä. UTF-32ÀÇ 32°¡ 32ºñÆ®¸¦ ÁöĪÇϹǷΠÅëÀϼºÀ» À§ÇØ 16ºñÆ®·Î ÀÌÇØÇϽô °Ô ÁÁ½À´Ï´Ù. 16ºñÆ®·Î Ç¥ÇöÇÑ´Ù´Â Á¡¿¡¼­´Â UCS-2¿Í Èí»çÇÏÁö¸¸ ´ëÇ๮ÀÚ¿µ¿ª(Surrogates)À» ÀÌ¿ëÇÏ¿© 16°³ÀÇ º¸Ãæ ¾ð¾îÆÇ Äڵ带 Ç¥ÇöÇÒ ¼ö ÀÖ´Â ÀÎÄÚµùÀÔ´Ï´Ù. ´ëÇ๮ÀÚ¿µ¿ª 2°³·Î 16°³ÀÇ º¸Ãæ ¾ð¾îÆÇÀ» Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. UCS-2¿¡¼­´Â 65536°³ÀÇ Äڵ常À» Á¤ÀÇÇÒ ¼ö ÀÖÀ¸³ª UTF-16¿¡¼­´Â 1¹é¸¸¿©ÀÚ¸¦ ´õ Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • UTF-32: UCS Transformation Format, 32-bit form
    32ºñÆ® Áï 4¹ÙÀÌÆ®·Î °¢ ¹®ÀÚ¸¦ Ç¥ÇöÇÕ´Ï´Ù. ÀÌÁ¡¿¡¼­ UCS-4¿Í µ¿ÀÏÇÏÁö¸¸ 17°³ÀÇ ¾ð¾îÆǸ¸À» Á¤ÀÇÇÑ´Ù´Â Á¡¿¡¼­´Â UCS-4ÀÇ ºÎºÐÁýÇÕÀ¸·Î °£ÁÖÇÏ¸é µË´Ï´Ù. UCS-4¿Í µ¿ÀÏÇϳª 0x00000000 ~ 0x0010FFFF ¹üÀ§¸¸À» ¹®ÀÚÄÚµå·Î °£ÁÖÇÑ´Ù°í ÀÌÇØÇÏ½Ã¸é µË´Ï´Ù.
  • Ç¥. °¢ ÀÎÄÚµùº° Ç¥Çö°¡´ÉÇÑ ¹®ÀÚ ¼ö
    ÀÎÄÚµù±×·ì ¾ð¾îÆǹ®ÀÚ¼ö(Ç¥ÁØ) ¹®ÀÚ¼ö(ÀÌ·ÐÀû)

    À§ÀÇ Ç¥¿¡¼­ Ç¥ÁØÀ̶ó ÇÔÀº À¯´ÏÄÚµå Ç¥ÁØ¿¡¼­ Á¤ÀÇÇÏ´Â °ÍÀ» ÀǹÌÇϸç, ÀÌ·ÐÀûÀ̶ó´Â °ÍÀº Ç¥ÁØÀÇ Á¤ÀǸ¦ ¹«½ÃÇÒ ¶§ Ç¥ÇöÇÒ ¼ö ÀÖ´Â ¹®ÀÚÀÇ ¼ö¸¦ ÀǹÌÇÕ´Ï´Ù. 211À» »« ºÎºÐÀÌ ÀÖ´Â µ¥, ÀÌ°ÍÀº »óÀ§´ëÇàÄÚµå(high surrogates) 1,024°³¿Í ÇÏÀ§´ëÇàÄÚµå(low surrogates) 1,024°³ÀÇ ÇÕÀÔ´Ï´Ù. UCS-2¿¡¼­´Â À̵éÀÌ ÇϳªÀÇ ¹®ÀÚ·Î Ãë±ÞµÇÁö¸¸, UTF-8, UTF-16, UTF-32ÀÇ ÀÎÄÚµù¿¡¼­´Â º¸Ãæ¾ð¾îÆÇÀÇ Äڵ带 ÁöÁ¤Çϴµ¥ »ç¿ëµÇ¹Ç·Î ÄÚµå·Î Ãë±ÞÇÒ ¼ö ¾ø½À´Ï´Ù.

    À¯´ÏÄÚµå ÀÎÄÚµù(Unicode Encodings)

    À¯´ÏÄڵ忡¼­ Áö¿øÇÏ´Â ÀÎÄÚµù ¹æ½ÄÀº UTF-8, UTF-16, UTF-32ÀÇ ¼¼°¡Áö ¹æ½ÄÀÔ´Ï´Ù. UTF´Â UCS Transformation FormatÀÇ ¾àÀÚÀ̸ç, µÚ¿¡ ºÙÀº ¼ýÀÚ´Â ÀÎÄÚµù¿¡ »ç¿ëµÇ´Â ´ÜÀ§ÀÇ ºñÆ®¼ö¸¦ ÀǹÌÇÕ´Ï´Ù. Áï UTF8Àº 8ºñÆ® ´ÜÀ§, UTF16Àº 16ºñÆ® ´ÜÀ§, UTF32´Â 32ºñÆ® ´ÜÀ§·Î ¹®ÀÚ¸¦ Ç¥ÇöÇÕ´Ï´Ù. ¼¼°¡Áö ¹æ½ÄÀÇ °øÅëÁ¡À̶ó¸é 16°³ÀÇ º¸Ãæ¾ð¾îÆÇ¿¡ À§Ä¡ÇÑ 1,048,576°³ÀÇ Äڵ带 Ç¥ÇöÇÒ ¶§´Â 4¹ÙÀÌÆ®¸¦ »ç¿ëÇÑ´Ù´Â Á¡ÀÔ´Ï´Ù. ÇÏÁö¸¸ ±× ¹æ½ÄÀº ¸ðµÎ ´Ù¸¨´Ï´Ù. UTF8Àº 4°³ÀÇ ¹ÙÀÌÆ®·Î, UTF16Àº 2°³ÀÇ 16ºñÆ®·Î, UTF32´Â 1°³ÀÇ 32ºñÆ® ´ÜÀ§·Î Ç¥ÇöÇÕ´Ï´Ù. ÀÌÁ¦ °¢ ÀÎÄÚµù ¹æ½Ä¿¡ ´ëÇØ Á»´õ »ó¼¼ÇÏ°Ô ¼³¸íÇÏ°Ú½À´Ï´Ù.

  • UTF-8

    °¡Àå ¿Ïº®ÇÏ°Ô À¯´ÏÄÚµå Ç¥ÁØÀ» Ç¥ÇöÇÏ´Â ÀÎÄÚµù ¹æ½ÄÀº UTF-16À̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·±µ¥ ÀÌ ÀÎÄÚµù¿¡¼­´Â 16ºñÆ® ´ÜÀ§·Î ÇϳªÀÇ ¹®ÀÚ°¡ Ç¥ÇöµÇ±â ¶§¹®¿¡ ÀüÅëÀûÀÎ char Çü°ú´Â ¸ÂÁö ¾Ê´Â ºÎºÐÀÌ ÀÖ½À´Ï´Ù. UTF-16À¸·Î ¹®ÀÚ¿­À» Ç¥ÇöÇßÀ» ¶§ ÀüÅëÀûÀÎ char ÇüÀ¸·Î ÀÌ ¹®ÀÚ¿­ Ãë±ÞÇÏ°Ô µÇ¸é Áß°£¿¡ ³Î(null, 0)°ªÀÌ µé¾î°¡°Ô µÇ¾î ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. Áï À¯´ÏÄڵ带 Áö¿øÇÏ·Á¸é, Áö±Ý±îÁö °³¹ßµÈ ¸ðµç ÇÁ·Î±×·¥À» Àç°³¹ßÇØ¾ß ÇÑ´Ù´Â ºÎ´ãÀÌ ¹ß»ýÇÕ´Ï´Ù. Çö½ÇÀûÀ¸·Î ÀÌ°ÍÀº °ÅÀÇ ºÒ°¡´ÉÇÑ ÀÏÀ̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.

    ÀÌÀÇ ´ë¾ÈÀ¸·Î Á¦½ÃµÈ ÀÎÄÚµùÀÌ ¹Ù·Î UTF8ÀÔ´Ï´Ù. UTF-8Àº ¹®ÀÚ¿­ÀÇ Áß°£ ¹ÙÀÌÆ®¿¡¼­ 0ÀÌ ³ªÅ¸³ªÁö ¾Êµµ·Ï °í¾ÈµÇ¾ú½À´Ï´Ù. À̸¦ À§ÇØ °¢ À¯´ÏÄÚµå ¹®ÀÚ´Â 1¹ÙÀÌÆ®¿¡¼­ 4¹ÙÀÌÆ®±îÁö °¡º¯ÀûÀ¸·Î ÀÎÄÚµùµÇµµ·Ï ÇÏ°í ÀÖ½À´Ï´Ù. UTF-8¿¡¼­´Â U+0000 ~ U+007F±îÁöÀÇ 128ÀÚ´Â 1¹ÙÀÌÆ®·Î Ç¥ÇöµÇ´Âµ¥ ÀÌ´Â ASCII¿Í µ¿ÀÏÇÕ´Ï´Ù. ¶Ç U+0080 ~ U+07FF±îÁö´Â µÎ ¹ÙÀÌÆ®, U+0800 ~ U+FFFF±îÁö´Â ¼¼ ¹ÙÀÌÆ®·Î Ç¥ÇöµË´Ï´Ù. Áï BMP³»ÀÇ ¸ðµç ¹®ÀÚ´Â 1 ~ 3¹ÙÀÌÆ®·Î Ç¥ÇöµË´Ï´Ù. ±×¸®°í ³ª¸ÓÁö 16°³ÀÇ º¸Ãæ¾ð¾îÆÇ¿¡ À§Ä¡ÇÏ´Â 1,048,576°³ÀÇ ÄÚµå´Â ³× ¹ÙÀÌÆ®·Î ÀÎÄÚµùµË´Ï´Ù. ´ÙÀ½ Ç¥¿¡¼­ UCS-4¿Í UTF-8°£ÀÇ º¯È¯ ¹æ¹ýÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.

    Ç¥. UTF-8°ú UCS-4°£ÀÇ º¯È¯ ±ÔÄ¢
    UCS-4UTF-8

    À§ÀÇ Ç¥¿¡¼­´Â UCS-4¿Í UTF-8°£ÀÇ º¯È¯ ±ÔÄ¢À» º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù¸¸, UCS-4ÀÇ ¸ðµç ¿µ¿ª¿¡ ´ëÇؼ­ º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù. ±×·¯³ª »¡°£»öÀ¸·Î Ä¥ÇÑ ºÎºÐÀ» 0x0010FFFF·Î º¯°æÇÏ°í ³ª¸ÓÁö´Â »èÁ¦ÇØ¾ß Á¤È®ÇÑ À¯´ÏÄÚµåÀÇ UTF-8 ÀÎÄÚµùÀ̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ¸ðµÎ Ç¥ÇöÇÑ °ÍÀº 6¹ÙÀÌÆ®±îÁö È®ÀåÇϸé UTF-8·Îµµ UCS-4ÀÇ Àü¿ªÀ» ÀÎÄÚµùÇÒ ¼ö ÀÖÀ½À» º¸¿©ÁÖ±â À§ÇÑ °ÍÀÔ´Ï´Ù. ¾Æ¸¶µµ 1¹é¸¸ÀÚÀÇ ÄÚµåÀ̸é Áö±¸»ó¿¡ Á¸ÀçÇ߰ųª Á¸ÀçÇÏ´Â ¸ðµç ¹®ÀÚ¸¦ Ç¥ÇöÇϱ⿡ ÃæºÐÇÒ °ÍÀ¸·Î ¿¹»óµË´Ï´Ù. ¿ìÁÖÀÇ ¸ðµç ¾ð¾îÄڵ带 Ç¥ÇöÇØ¾ß ÇÒ ¶§°¡ ¿À¸é 0x00110000 ÀÌÈÄÀÇ ¿µ¿ªµµ »ç¿ëÇÒ °¡´É¼ºÀÌ Á¶±ÝÀ̳ª¸¶ ÀÖÀ»±î¿ä?

    ¾î·µç, ÇöÀç À¯´ÏÄÚµå Ç¥ÁØ¿¡¼­´Â UTF-8ÀÌ 4¹ÙÀÌÆ®±îÁö·Î ÀÎÄÚµùµË´Ï´Ù. À¯´ÏÄڵ忡 Á¤ÀÇµÈ °¢ ÄÚµå´Â ¹Ýµå½Ã ´ÙÀ½°ú °°Àº ¹üÀ§¿¡¼­ ÀÎÄÚµùµÇ¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½ Ç¥´Â UTF-8 ÀÎÄÚµù¿¡¼­ °¢ ¹ÙÀÌÆ®¿¡ ¿Ã ¼ö ÀÖ´Â °ªÀ» º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù.

    Ç¥. ¿Ã¹Ù¸¥ UTF-8 ¹ÙÀÌÆ® ¹è¿­
    Code Points1st Byte 2nd Byte 3rd Byte 4th Byte
    U+0000 ~ U+007F
    U+0080 ~ U+07FF
    U+0800 ~ U+0FFF
    U+1000 ~ U+CFFF
    U+D000 ~ U+D7FF
    U+D800 ~ U+DFFF
    U+E000 ~ U+FFFF
    U+10000 ~ U+3FFFF
    U+40000 ~ U+FFFFF
    U+100000 ~ U+10FFFF

  • UTF-16

    UCS-2¿Í °ÅÀÇ µ¿ÀÏÇÕ´Ï´Ù. ÀÌ ÀÎÄÚµùÀÇ ±âº» ´ÜÀ§´Â 16ºñÆ®, Áï 2¹ÙÀÌÆ®ÀÔ´Ï´Ù. ´ëÇ๮ÀÚ ¿µ¿ª 2,048°³¸¦ Á¦¿ÜÇÑ 63,488°³ÀÇ Äڵ带 ¹®ÀÚ·Î »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç(BMP), ´ëÇ๮ÀÚ ¿µ¿ª 2°³ÀÇ ½ÖÀ» ÀÌ¿ëÇÏ¿© 16°³ÀÇ º¸Ãæ¾ð¾îÆÇ¿¡ À§Ä¡ÇÑ 1,048,576°³ÀÇ Äڵ带 Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

    ´ëÇà ¹®ÀÚ 2°³ÀÇ ½ÖÀ¸·Î 1°³ÀÇ ¹®ÀÚ¸¦ ÀÎÄÚµùÇÑ´Ù´Â Á¡¿¡¼­ UTF-16ÀÇ ÀÎÄÚµùÀº °¡º¯ÀûÀÎ ÀÎÄÚµùÀ̶ó°í ÇÒ ¼ö ÀÖ°Ú±º¿ä. Áï ±âº»¾ð¾îÆÇÀÇ ¹®ÀÚ´Â 2¹ÙÀÌÆ®·Î º¸Ãæ¾ð¾îÆÇÀÇ ¹®ÀÚ´Â 4¹ÙÀÌÆ®·Î ÀÎÄÚµùµË´Ï´Ù. ÀÌ·¯ÇÑ ÀÎÄÚµù ¹æ½Ä¶§¹®¿¡ UTF-16¿¡¼­´Â À¯´ÏÄÚµå Ç¥ÁØ¿¡¼­ Áö¿øÇÏ´Â 17°³ÀÇ ¾ð¾îÆÇ Äڵ常 Ç¥ÇöÀÌ °¡´ÉÇÕ´Ï´Ù. °¡Àå À¯´ÏÄÚµå´Ù¿î ÀÎÄÚµùÀ̶ó°í ÇÒ ¼ö ÀÖ°Ú±º¿ä :-)

    ÀÌÁ¦ ´ëÇàÄÚµå ¹× À̸¦ ÀÌ¿ëÇÑ º¸Ãæ¾ð¾îÆÇ ÄÚµåÀÇ ÀÎÄÚµù ¹æ½ÄÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù. À¯´ÏÄÚµå 3.0¿¡¼­ BMPÀÇ U+D800ºÎÅÍ U+DFFF±îÁöÀÇ 2,048 Äڵ尡 ´ëÇàÄÚµå ¿µ¿ª(surrogates)À¸·Î Á¤ÀǵǾú½À´Ï´Ù. ÀÌÁß U+D800 ~ U+DBFFÀÇ 1,024°³¸¦ »óÀ§´ëÇàÄÚµå(high surrogates), U+DC00 ~ U+DFFFÀÇ ÇÏÀ§´ëÇàÄÚµå(low surrogates)¶ó°í ÇÕ´Ï´Ù. »óÀ§´ëÇàÄÚµå 1°³¿Í ÇÏÀ§´ëÇàÄÚµå 1°³ÀÇ Á¶ÇÕÀ¸·Î, Áï, 16ºñÆ® ´ÜÀ§ 2°³·Î º¸Ãæ¾ð¾îÆÇÀÇ 1¹é¸¸¿©°³ÀÇ Äڵ带 ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

    µÎ°³ÀÇ ´ëÇàÄÚµå·Î Á¶ÇÕµÈ Äڵ带 UTF-32 ÄÚµå·Î ´ëÀÀ½ÃÅ°´Â °ø½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù.

      CodeValue = (HighSurrogate - 0xD800)*(LowSurrogate - 0xDC00) + 0x10000

        ¿©±â¼­ CodeValue´Â UTF-32 Äڵ尪ÀÔ´Ï´Ù. 0xD800ÀÇ »óÀ§´ëÇàÄÚµå ¿µ¿ªÀÇ ½ÃÀÛÁ¡À̸ç 0xDC00Àº ÇÏÀ§´ëÇàÄÚµå ¿µ¿ªÀÇ Ã¹¹ø° °ªÀÔ´Ï´Ù. º¸Ãæ¾ð¾îÆÇÀº 0x10000ºÎÅÍ ½ÃÀÛÇϹǷΠ¸¶Áö¸·¿¡ ÀÌ °ªÀ» ´õÇØÁÝ´Ï´Ù. ÀÌ °ø½Ä¿¡ ÀÇÇØ CodeValue´Â U+10000 ~ U+10FFFF±îÁö 1048576°³ÀÇ °ªÀ» °¡Áú ¼ö ÀÖ°Ô µË´Ï´Ù.

    UTF-16¿¡¼­´Â »óÀ§´ëÇàÄڵ尡 ³ªÅ¸³ª¸é ¹Ýµå½Ã µÚÀ̾î ÇÏÀ§´ëÇàÄڵ尡 µû¶ó¿Í¾ß ÇÕ´Ï´Ù. UCS-2¿¡¼­´Â ±×·¸Áö ¾Æ´ÏÇÑ Á¡ÀÌ UTF-16°ú UCS-2ÀÇ Â÷ÀÌÁ¡ÀÔ´Ï´Ù.

  • UTF-32

    UTF-32´Â 32ºñÆ®, Áï 4¹ÙÀÌÆ®·Î ¸ðµç À¯´ÏÄÚµå ¹®ÀÚ¸¦ Ç¥ÇöÇÕ´Ï´Ù. UTF-8°ú UTF-16¿¡ ´ëºñÇؼ­ °íÁ¤±æÀÌ ÀÎÄÚµùÀ̶ó°í ÇÒ ¼ö ÀÖ°Ú±º¿ä. 4¹ÙÀÌÆ® ´ÜÀ§·Î Ç¥ÇöÇÑ´ÙÇؼ­ UCS-4¿Í µ¿ÀÏÇÏ°Ô º¼ ¼ö´Â ¾ø½À´Ï´Ù. 17°³ÀÇ ¾ð¾îÆǸ¸À» ´ë»óÀ¸·Î ÇÏ´Â UCS-4ÀÇ ºÎºÐÁýÇÕÀ̶ó°í º¸½Ã¸é µË´Ï´Ù(Ç¥ÁØ»ó ±×·¸½À´Ï´Ù). Áï UTF-32ÀÇ ÀÎÄÚµù ¿µ¿ªÀº 0x00000000¿¡¼­ 0x0010FFFF·Î Á¦ÇѵǾî¾ß ÇÕ´Ï´Ù(ÀÌ Á¦ÇÑÀ» ¹«½ÃÇϸé UCS-4¿Í µ¿ÀÏÇÕ´Ï´Ù).

  • º¸Ãæ¾ð¾îÆÇ¿¡ ´ëÇÑ UTF-32¿Í UTF-16ÀÇ ÀÎÄÚµù

    À§ÀÇ ¼¼ ÀÎÄÚµù°£ÀÇ º¯È¯Àº ¾Ë°í¸®ÁòÀÇ ¹®Á¦¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. À¯´ÏÄÚµå ÄÁ¼Ò½Ã¾ö¿¡¼­ Á¦°øÇÏ´Â C ¾ð¾î·Î µÈ º¯È¯ Äڵ带 º¸¸é ¾ÆÁÖ °£´ÜÇÏ°Ô ¼¼ ÀÎÄÚµù°£ÀÇ º¯È¯ÀÌ ÀÌ·ç¾îÁö´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.

    ´ÙÀ½ Ç¥¿¡¼­´Â º¸Ãæ¾ð¾îÆÇ(Supplementary Planes)ÀÇ ÄÚµå ÀÎÄÚµùÀ» UTF-32¿Í UTF-16 ÀÎÄÚµù¿¡ ´ëÇØ º¸¿©ÁÝ´Ï´Ù.

    Ç¥. UTF-32¿Í UTF-16ÀÇ º¸Ãæ¾ð¾îÆÇ ÄÚµå ÀÎÄÚµù
    ¾ð¾îÆÇ(plane) UTF-32 Encoding UTF-16 Encoding

  • UTF-16°ú UTF-8¿¡¼­ÀÇ ´ëÇàÄÚµå ÀÎÄÚµù¿¡ °üÇÑ ¿ÀÇØ

    º» Àý¿¡¼­´Â ´ëÇàÄÚµå(Surrogates)¸¦ ÀÌ¿ëÇÏ¿© º¸Ãæ¾ð¾îÆÇ Äڵ念¿ªÀ» ÀÎÄÚµùÇÒ ¶§ »ç¶÷µéÀÌ Á¾Á¾ ¿ÀÇØÇÏ´Â ºÎºÐ¿¡ ´ëÇؼ­ ¼³¸íÇÏ°íÀÚ ÇÕ´Ï´Ù. ¾Õ¼­ ¼³¸íÇßµíÀÌ UTF-16¿¡¼­´Â U+10000 ~ U+10FFFF±îÁöÀÇ Äڵ带 ÀÎÄÚµùÇϱâ À§ÇÏ¿© »óÀ§´ëÇàÄÚµå(high surrogate) 1°³¿Í ÇÏÀ§´ëÇàÄÚµå(low surrogate) 1°³ÀÇ ½ÖÀ¸·Î Ç¥ÇöÇÑ´Ù°í ÇÏ¿´½À´Ï´Ù. ±×·¸´Ù¸é UTF-8¿¡¼­µµ µÎ°³ÀÇ ´ëÇàÄڵ带 °¢°¢ 3¹ÙÀÌÆ®¾¿À¸·Î ÀÎÄÚµùÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù(´ëÇàÄڵ尡 Á¦¾ÈµÇ¾úÀ» Ãʱ⿡ °³¹ßµÈ ¸¹Àº ÇÁ·Î±×·¥µéÀÌ ½ÇÁ¦·Î ÀÌ·¸°Ô ±¸ÇöÇß¾ú´Ù°í ÇÕ´Ï´Ù).

    ÀÌ ¹æ½ÄÀÌ Á¦´ë·Î µ¿ÀÛÇÒ ¼ö´Â ÀÖÁö¸¸ ¼¼°¡Áö ¹®Á¦Á¡ÀÌ ÀÖ½À´Ï´Ù. ù° ¹®Á¦Á¡Àº º¸Ãæ¾ð¾îÆÇÀÇ ¸ðµç Äڵ尡 6¹ÙÀÌÆ®·Î ÀÎÄÚµùµÈ´Ù´Â °ÍÀÔ´Ï´Ù - Á¤»óÀûÀÎ ¹æ¹ýÀ¸·Î´Â 4¹ÙÀÌÆ®·Î ÀÎÄÚµùµË´Ï´Ù. µÎ¹ø°´Â ÀÎÄÚµùµÈ ¹®ÀÚ¿­ÀÇ Çؼ®ÀÔ´Ï´Ù. º¸Ãæ¾ð¾îÆÇÀÇ ½ÇÁ¦ ÄÚµå °ªÀº U+10000 ~ U+10FFFFÀε¥ ´ëÇàÄڵ带 UTF-8 ÀÎÄÚµù¿¡ ÀÌ¿ëÇÏ°Ô µÇ¸é, µÎ°³ÀÇ ´ëÇàÄÚµå·ÎºÎÅÍ ½ÇÁ¦ Äڵ尪À¸·Î ´Ù½Ã °è»êÇØÁÖ¾î¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ½À´Ï´Ù. ¼¼Â°, ÅؽºÆ® ÀÎÄÚµùÀÇ ¾ÈÁ¤¼ºÀÌ ¶³¾îÁø´Ù´Â °ÍÀÔ´Ï´Ù. ¼¼ ¹ÙÀÌÆ®·Î ÀÎÄÚµùµÈ »óÀ§´ëÇàÄڵ尡 ³ªÅ¸³ª¸é ±× ´ÙÀ½¿¡´Â ¹Ýµå½Ã ÇÏÀ§´ëÇàÄڵ尡 µû¶ó¿Í¾ß ÇϹǷÎ, Á¤»óÀûÀÎ ¹æ¹ý¿¡ ºñÇØ ¿À·ù°¡ ¹ß»ýÇÒ À§Ç輺ÀÌ ±×¸¸Å­ ´õ Ä¿Áø´Ù´Â °ÍÀÌÁÒ.

    ÀÌ·¯ÇÑ ¹®Á¦Á¡µé ¶§¹®¿¡ UTF-8¿¡¼­´Â ´ëÇàÄÚµå ÀÚü¸¦ "Àý´ë·Î" ÀÎÄÚµùÇÏÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ´ëÇàÄڵ念¿ªÀÇ byte sequence¸¦ º¸¸é ill-formed¶ó°í ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ¶ÇÇÑ ´ëÇàÄڵ带 ÀÎÄÚµùÇÑ °ÍÀ» »ç¿ëÇÏ°Ô µÇ¸é 17°³ÀÇ ¾ð¾îÆÇ ¹Û¿¡´Â Ç¥ÇöÇÒ ¼ö ¾ø´Ù´Â ´ÜÁ¡µµ °¡Áö°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌ·¯Àú·¯ÇÑ ÀÌÀ¯·Î UTF-8Àº ±ÔÄ¢¿¡ µû¶ó ¼ø¼­´ë·Î Äڵ尪À» ÀÎÄÚµùÇÕ´Ï´Ù. µû¶ó¼­ ´ëÇàÄڵ念¿ª(Surrogates)Àº UTF-16 ÀÎÄÚµù¿¡¼­¸¸ µË´Ï´Ù.

    ±âŸ

    Á¦°¡ ÇÁ·Î±×·¥ÇØ¾ß ÇÒ À¯´ÏÄÚµå 󸮺κÐÀº UTF-8 ÀÎÄÚµùÀ» »ç¿ëÇÕ´Ï´Ù. ÀÌ ÀÎÄÚµùÀº ¹ÙÀÌÆ®´ÜÀ§À̱⠶§¹®¿¡ ÄÄÇ»ÅÍ ±âÁ¾¿¡ µû¶ó ¹ß»ýÇÏ´Â ¹ÙÀÌÆ® ¹è¿­(byte ordering) ¼ø¼­¸¦ ¹«½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ UTF-16À̳ª UTF-32¿Í °°Àº ´Ù¹ÙÀÌÆ® ÀÎÄÚµùÀ» ÀÌ¿ëÇÏ·Á¸é ÀÌ ¹®Á¦¸¦ ½Å°æ½á¾ß ÇÑ´Ù°í ÇÕ´Ï´Ù. -- little-endian, big-endian ¹®Á¦... ÀÌ ¶§¹®¿¡ ¹ÙÀÌÆ®¼ø¼­Ç¥½Ä(BOM, Byte Oder Mark)À» »ç¿ëÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù. Áï UTF-16À̳ª UTF-32 ¹®ÀÚ¿­ÀÇ Ã³À½¿¡ BOMÀ» »ðÀÔÇÏ¸é µË´Ï´Ù. °¢ ÀÎÄÚµùÀÇ BOMÀº ´ÙÀ½ Ç¥¿Í °°½À´Ï´Ù.

    Ç¥. Little-endian, Big-endian ¹ÙÀÌÆ®¼ø¼­¿¡ µû¸¥ BOM
    ±¸ºÐLittle-endian Big-endian

    ¿äÁò »ý»êµÇ´Â RISC CPU(MIPS³ª ARM °°Àº)´Â big-endian°ú little-endianÀ» ¸ðµÎ Áö¿øÇÑ´Ù°í Çϴ±º¿ä. ³ªÀÇ »ý°¢: °³¹ßÀڵ鿡°Ô´Â ¹«ÁöÇÏ°Ô °ñÄ¡¾ÆÇÁ°Ú±º¿ä - ÇÁ·Î±×·¥ÇÒ ¶§ µÎ°¡Áö °æ¿ì ¸ðµÎ¿¡ ´ëÇØ °í·ÁÇØ¾ß ÇÒ Å×´Ï... ¾î·µç Á¦°¡ Ÿ°ÙÀ¸·Î »ï°í ÀÖ´Â ÀÎÄÚµùÀº UTF-8·Î Á¤º¸°Ë»ö½Ã½ºÅÛ¿¡¼­ »ç¿ëÇÒ ¿¹Á¤À̱⠶§¹®¿¡ ¹ÙÀÌÆ®¼ø¼­¿¡´Â º°·Î »ó°ü¾øÀ» °Í °°¾Æ¼­ ´ÙÇàÀ̱º¿ä :-)

    Âü°í¹®Çå[Ken Kunde]¿¡ ¿£µð¾È¹®Á¦¿¡ µû¸¥ ÁÁÀº ¿¹Á¦°¡ À־ À̸¦ ¼³¸íÇÒ±î ÇÕ´Ï´Ù. UTF-16¿¡¼­ 0x4E¿Í 0x00 µÎ ¹ÙÀÌÆ®·Î ¿¹¸¦ µé°Ú½À´Ï´Ù. little- ¶Ç´Â big-endian¿¡ µû¶ó µÑÀÇ Á¶ÇÕÀº 0x4E00 ¶Ç´Â 0x004E°¡ µÉ °ÍÀÔ´Ï´Ù. Endian ¹æ½Ä¿¡ µû¶ó µÎ ±ÛÀÚ´Â ¼­·Î ´Ù¸¥ ±ÛÀÚ¸¦ ³ªÅ¸³»°Ô µË´Ï´Ù. °á°ú´Â ´ÙÀ½°ú °°½À´Ï´Ù.

    • 0x4E00/Big-endian : 'ìé' (ÇÑÀÚ 1)
    • 0x4E00/Little-endian : 'N' (´ë¹®ÀÚ N)
    • 0x004E/Big-endian : 'N' (´ë¹®ÀÚ N)
    • 0x004E/Little-endian : 'ìé' (ÇÑÀÚ 1)

    ¸¶Áö¸·À¸·Î À¯´ÏÄÚµå ÄÁ¼Ò½Ã¾öÀÌ Á¦°øÇÏ´Â UTF8, UTF16, UTF32 ÀÎÄÚµù°£ÀÇ º¯È¯ ¼Ò½º¸¦ ¼Ò°³ÇÏ°Ú½À´Ï´Ù. ÀÌ ¼Ò½º´Â C ¾ð¾î·Î µÇ¾î ÀÖÀ¸¸ç http://www.unicode.org/Public/PROGRAMS/CVTUTF/¿¡¼­ ´Ù¿î·Îµå¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¼Ò½º¸¦ ºÐ¼®Çغ¸¸é °¢ ÀÎÄÚµù ¹æ¹ý¿¡ ´ëÇØ ¸íÈ®ÇÏ°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

    À¯´ÏÄÚµå °ü·Ã ¹®¼­µéÀ» Á¢Çϸ鼭 Á¦°¡ ¹ÞÀº ´À³¦Àº À¯´ÏÄÚµå´Â À¯´ÏÄÚµå ÄÁ¼Ò½Ã¿ò ´ä°Ô, ISO/IEC 10646Àº ISO´ä°Ô Äڵ带 Á¤ÀÇÇß´Ù´Â °ÍÀÔ´Ï´Ù. ±×°Íµµ µ¿ÀÏÇÑ ³»¿ëÀ» Á¤ÀÇÇϸ鼭 ´À³¦ÀÌ ´Ù¸£´Ï Âü Á¸°æ½º·´´õ±º¿ä. ¹«½¼ ¸»Àΰí ÇÏ´Ï, À¯´ÏÄÚµå´Â ¾÷ü°¡ Á¦¾ÈÇÑ ÄÚµåÀÌ°í 10646Àº Ç¥Áرⱸ¿¡¼­ Á¦¾ÈÇÏ´Â ÄÚµå¶ó´Â °ÍÀÔ´Ï´Ù. µû¶ó¼­ À¯´ÏÄÚµå ÂÊÀº ±¸ÇöÀÌ Áß¿äÇÑ ÀïÁ¡ÀÌ µÇ°í Ç¥Áرⱸ¿¡¼­´Â Ç¥ÁØÀÇ ¹ü¿ë¼º, È®À强 µî ±¸Çö ¿ÜÀÇ °üÁ¡µéÀÌ ´õ Áß¿äÇßÀ» °ÍÀ̶ó´Â °ÍÀÔ´Ï´Ù. ÀÌ·± ÀÌÀ¯·Î À¯´ÏÄÚµå´Â ÄÚµåÀÇ ¹üÀ§¸¦ 1¹é¸¸ÀÚ Á¤µµ·Î ÇÑÁ¤ÇÔÀ¸·Î½á ±¸ÇöÀÌ ½¬¿ï »Ó¸¸´Ï¶ó ÄÚµåÀÚü·Î ÀÎÇÑ ¿À·ù ¹ß»ý °¡´É¼ºÀ» ÃÖ¼ÒÈ­ Çß´Ù°í º¼¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ISOÀÇ ÀÔÀå¿¡¼­´Â ±×°ÍÀÌ ¸Õ ¹Ì·¡ÀÇ ÀÏÀÏÁö¶óµµ »õ·Î¿î ¹®ÀÚÀÇ ¼ö¿ë µîÀ» °í·ÁÇÒ ¼ö ÀÖ´Â Àǹ̷ÐÀûÀÎ Á¢±ÙÀÌ ´õ Áß¿äÇßÀ» °Í °°½À´Ï´Ù. ±×·¡¼­ 4¹ÙÀÌÆ® Á¤¼öÇü Àüü¸¦ ÄÚµå·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °¡´É¼ºÀ» ¿­¾î ³õÀº °ÍÀ¸·Î º¸ÀÔ´Ï´Ù. °°Àº Ç¥ÁØÀ¸·Î Âü Àý¹¦ÇÑ Â÷À̸¦ º¸¿©Áִ±º¿ä.

    ±ä ±ÛÀ» ´Ù ÀоîÁּż­ °¨»çÇÕ´Ï´Ù. ±×¸®°í ¸¹Àº µµ¿òÀÌ µÇ¾ú±â¸¦ ¹Ù¶ø´Ï´Ù. -- ±èÁø¼÷

    Âü°í¹®Çå