¹Ì±¹ÀεéÀº ¿À·§µ¿¾È ¾Æ½ºÅ° ¹®ÀÚ¼ÂÀ» ÀÌ¿ëÇÏ¿© ÅØ½ºÆ®¸¦ ¼·Î ±³È¯Çß´Ù; º»·¡ ¹Ì±¹ÀÇ ¸ðµç ½Ã½ºÅÛµéÀÌ ¾Æ½ºÅ°¸¦ Áö¿øÇϱ⠶§¹®¿¡ ¿µ¾î ÅØ½ºÆ®¸¦ ¼Õ½±°Ô ±³È¯ÇÒ ¼ö ÀÖ´Ù. ºÒÇàÈ÷µµ ¾Æ½ºÅ°´Â °ÅÀÇ ¸ðµç ´Ù¸¥ ¾ð¾îÀÇ ¹®ÀÚ¸¦ ´Ù·ç±â¿¡´Â ºÎÀûÀýÇÏ´Ù. ¿À·§µ¿¾È ¿©·¯ ³ª¶óµéÀº ´Ù¸¥ ¾ð¾î·Î ÅØ½ºÆ®¸¦ ±³È¯ÇÏ´Â ¿©·¯°¡Áö ±â¹ýÀ» äÅÃÇØ¿ÔÀ¸¸ç ÀÌ´Â ´õ¿í ´õ »óÈ£ ¿¬°áµÈ ¼¼»ó¿¡¼ µ¥ÀÌŸ¸¦ ±³È¯ÇÏ´Â °ÍÀ» ¾î·Æ°Ô ¸¸µé°í ÀÖ´Ù.
´õ¿í ÃÖ±Ù¿¡ ISO ´Â ISO 10646, Universal Multiple-Octet Coded Character Set (UCS) À» °³¹ßÇߴµ¥ UCS ´Â ¼¼»óÀÇ ¸ðµç ¹®ÀÚ °¢°¢¿¡ ´ëÇØ À¯ÀÏÇÑ 31 ºñÆ® °ªÀ» Á¤ÀÇÇÏ´Â ÄÚµåÈµÈ ¹®ÀÚ¼ÂÀÌ´Ù. UCS ÀÇ Ã¹ 65536 ¹®ÀÚ (µû¶ó¼ 16 ºñÆ®¿¡ ²À¸Â´Ù) ´Â Basic Multilingual Plane (BMP) À̶ó°í ĪÇϸç BMP ´Â °ÅÀÇ ¿À´Ã³¯ ¸ðµç ±¸¾î¸¦ ´Ù·ç·Á°í ÇÑ´Ù. Unicode Æ÷·³Àº À¯´ÏÄÚµå Ç¥ÁØÀ» °³¹ßÇϴµ¥ ÀÌ´Â UCS ¿¡ ÁßÁ¡À» µÎ¾î »óÈ£ ÀÌ¿ëÀ» µ½±â À§ÇØ ¾à°£ÀÇ Ãß°¡ÀûÀÎ ÇÕÀǸ¦ Ãß°¡ÇÑ´Ù. ¿ª»çÀûÀ¸·Î À¯´ÏÄÚµå¿Í ISO 10646 Àº °æÀï ±×·ìÀÌ °³¹ßÇßÁö¸¸ °í¸¿°Ôµµ µÎ ±×·ìÀº °øµ¿ ÀÛ¾÷ÀÇ Çʿ伺À» ±ú´Þ¾ÒÀ¸¸ç ÇöÀç ¼·Î Çù·ÂÇÏ¸ç °³¹ßÇϰí ÀÖ´Ù.
±¹Á¦ÈµÈ ¹®ÀÚ¸¦ ´Ù·ç´Â »õ·Î¿î ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÛ¼ºÇϰí ÀÖ´Ù¸é ±¹Á¦ÀûÀÎ ¹®ÀÚ¸¦ ´Ù·ç±â À§ÇÑ ±âÃÊ·Î ISO 10646/À¯´ÏÄڵ带 »ç¿ëÇØ¾ß ÇÑ´Ù. ±×·¯³ª ´Ù¾çÇÑ ¿¾³¯ (¾ð¾î¿¡ ƯÁ¤ÀûÀÎ) ¹®ÀÚ¼ÂÀ¸·Î ¾²¿©Áø ¿¾³¯ ¹®¼¸¦ ó¸®ÇÒ Çʿ䰡 ÀÖÀ» ¼ö Àִµ¥ ÀÌ °æ¿ì¿¡ ÀÖ¾î ½Å·ÚÇÒ ¼ö ¾ø´Â »ç¿ëÀÚ°¡ ´Ù¸¥ ¹®¼ÀÇ ¹®Àڼ ¼³Á¤À» Á¦¾îÇÒ ¼ö ¾øµµ·Ï º¸ÁõÇÒ Çʿ䰡 ÀÖ´Ù (ÀÌ´Â ¹®¼ÀÇ ÇØ¼®¿¡ »ó´çÈ÷ ¿µÇâÀ» ¹ÌÄ¥ ¼ö Àֱ⠶§¹®ÀÌ´Ù).
´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î´Â 16 ºñÆ® ¶Ç´Â 32 ºñÆ® ¹®ÀÚ¸¦ ´Ù·çµµ·Ï ¼³°èµÇÁö ¾ÊÀ¸¸ç ¾ÆÁ÷Àº 8 ºñÆ® ÀÌ»óÀÇ Æ÷°ýÀûÀÎ ¹®ÀÚ¼ÂÀ» »ý¼ºÇϵµ·Ï ¼³°èµÇÁö ¾Ê°í ÀÖ´Ù. µû¶ó¼ ±âÁ¸ ÇÁ·Î±×·¥ ¹× ¶óÀ̺귯¸®°¡ ´õ¿í ½±°Ô ´Ù·ê ¼ö ÀÖ´Â Æ÷¸ËÀ¸·Î ÀÌ·¯ÇÑ ÀáÀçÀûÀ¸·Î ±¹Á¦ÀûÀÎ ¹®ÀÚ¸¦ ÀÎÄÚµåÇÒ ¼ö ÀÖµµ·Ï UTF-8 À̶ó´Â ƯÁ¤ Æ÷¸ËÀÌ °³¹ßµÇ¾ú´Ù. UTF-8 Àº ´Ù¸¥ °÷Áß¿¡¼ IEFT-RFC 2279 ¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç ÀÌ ¶§¹®¿¡ ÀÚÀ¯·ÎÀÌ ÀÐÇôÁö°í »ç¿ëµÉ ¼ö ÀÖ´Â Àß Á¤ÀÇµÈ Ç¥ÁØÀÌ´Ù.. UTF-8 Àº °¡º¯ ³Êºñ (variable-width) ÀÎÄÚµùÀ¸·Î 0 ¿¡¼ 0x7f (127) ±îÁö ¹øÈ£°¡ ¸Å°ÜÁø ¹®ÀÚµé ÀÚ½ÅÀ» ½Ì±Û ¹ÙÀÌÆ®·Î ÀÎÄÚµåÇÏ¸ç ¹Ý¸é ´õ¿í Å« °ªÀ» °®´Â ¹®ÀÚµéÀº ±× °ª¿¡ µû¶ó Á¤º¸°¡ 2 ¿¡¼ 6 ¹ÙÀÌÆ®·Î ÀÎÄÚµåµÈ´Ù. ÀÎÄÚµùÀº ƯÈ÷ ´ÙÀ½ÀÇ Á¤È®ÇÑ Æ¯¼ºÀ» °®µµ·Ï ¼³°èµÇ¾î¿Ô´Ù (ÀÌ Á¤º¸ÀÇ Ãâó´Â RFC ¹× ¸®´ª½º utf-8 ¸ÇÆäÀÌÁöÀÌ´Ù):
°íÀüÀûÀÎ ¹Ì±¹ ¾Æ½ºÅ° ¹®ÀÚ (0 ¿¡¼ 0x7f) ´Â ÀÚ½ÅÀ¸·Î ÀÎÄÚµåµÇ°í ÀÌ ¶§¹®¿¡ ´ÜÁö 7 ºñÆ® ¾Æ½ºÅ° ¹®ÀÚµéÀ» Æ÷ÇÔÇÑ ÆÄÀÏ ¹× ¹®ÀÚ¿ÀÌ ¾Æ½ºÅ°¿Í UTF-8 ÇÏ¿¡¼ µ¿ÀÏÇÑ ÀÎÄÚµùÀ» °®´Â´Ù. ÀÌ´Â ¸¹Àº ±âÁ¸ ¹Ì±¹ ÇÁ·Î±×·¥°ú µ¥ÀÌŸ ÆÄÀÏ¿¡ ´ëÇØ ¿ªÇà ȣȯ¼ºÀ» Á¦°øÇϱ⠶§¹®¿¡ ³î¶ó¿î °ÍÀÌ´Ù.
0x7f ¸¦ ÃʰúÇÏ´Â ¸ðµç UCS ¹®ÀÚ´Â 0x80 ¿¡¼ 0xfd ÀÇ ¹üÀ§³»ÀÇ ¹ÙÀÌÆ®·Î¸¸ ±¸¼ºµÇ´Â ¸ÖƼ¹ÙÀÌÆ® ½ÃÄö½º·Î ÀÎÄÚµåµÈ´Ù. ÀÌ´Â ¾î¶°ÇÑ ¾Æ½ºÅ° ¹ÙÀÌÆ®µµ ´Ù¸¥ ¹®ÀÚÀÇ ÀϺκÐÀ¸·Î ³ªÅ¸³¯ ¼ö ¾øÀ½À» ÀǹÌÇÑ´Ù. ¸¹Àº ´Ù¸¥ ÀÎÄÚµùÀº ÇÁ·Î±×·¥ÀÇ ½ÇÆÐ¸¦ ¾ß±âÇÏ´Â ÀÓº£µðµå NIL °ú °°Àº ¹®ÀÚ¸¦ Çã¿ëÇÑ´Ù.
UTF-8 ¹× 2 ¹ÙÀÌÆ® ¶Ç´Â 4 ¹ÙÀÌÆ® °íÁ¤ ÆøÀ» °®´Â ¹®ÀÚ Ç¥Çö»çÀÌ¿¡ º¯È¯ÀÌ ½±´Ù. (À̵éÀº °¢°¢ UCS-2 ¹× UCS-4 ·Î ºÒ¸°´Ù)
UCS-4 ¹®ÀÚ¿ÀÇ »çÀüÇÐÀû Á¤·Ä ¼ø¼°¡ À¯ÁöµÇ¸ç Boyer-Moore ÀÇ fast search algorithm ÀÌ UTF-8 µ¥ÀÌŸ¿¡ Á÷Á¢ÀûÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù.
¸ðµç °¡´ÉÇÑ 2^31 UCS Äڵ尡 UTF-8 À» »ç¿ëÇØ¼ ÀÎÄÚµåµÉ ¼ö ÀÖ´Ù.
ÇϳªÀÇ ¾Æ½ºÅ°°¡ ¾Æ´Ñ UCS ¹®ÀÚ¸¦ Ç¥ÇöÇÏ´Â ¸ÖƼ¹ÙÀÌÆ® ½ÃÄö½ºÀÇ Ã¹¹øÂ° ¹ÙÀÌÆ®´Â ´Ã 0x20 °ú 0xfd »çÀÌÀÇ ¹üÀ§¿¡ ÀÖÀ¸¸ç ÀÌ·¯ÇÑ ¸ÖƼ¹ÙÀÌÆ® ½ÃÄö½ºÀÇ ±æÀ̸¦ °¡¸®Å²´Ù. ¸ÖƼ¹ÙÀÌÆ® ½ÃÄö½º³»¿¡¼ ¸ðµç µÚÀÇ ¹ÙÀÌÆ®´Â 0x80 °ú 0xbf »çÀÌÀÇ ¹üÀ§¿¡ ÀÖ´Ù. ÀÌ´Â ½¬¿î À絿±â¸¦ Çã¿ëÇϴµ¥ ÇÑ ¹ÙÀÌÆ®¸¦ »ý·«ÇÏ´Â °æ¿ì ``´ÙÀ½" ¹®ÀÚ·Î °Ç³Ê¶Ù´Â °ÍÀº ½¬¿ì¸ç ¶ÇÇÑ ``´ÙÀ½" ¶Ç´Â ``ÀÌÀü" ¹®ÀÚ·Î À̵¿ÇÏ´Â °ÍÀº ´Ã ½±´Ù.
¿ä¾àÇϸé UTF-8 º¯È¯ Æ÷¸ËÀº ´Ù¸¥ Á¤È®ÇÑ Æ¯¼ºÀ» °®À» »Ó ¾Æ´Ï¶ó ¸ðµç ¼¼°èÀÇ ¾ð¾î¸¦ Áö¿øÇÒ ¼ö ÀÖ°í Áö±ÝÀ¸·Î¼´Â ¹Ì±¹ ¾Æ½ºÅ° ÆÄÀϰú ¿ªÇà ȣȯ¼ºÀ» °®°í Àֱ⠶§¹®¿¡ ±¹Á¦È ÅØ½ºÆ® Á¤º¸¸¦ ±³È¯Çϴµ¥ ÀÖ¾î °¡Àå À¯·ÂÇÑ ¹æ¹ýÀÌ µÇ°í ÀÖ´Ù. ¸¹Àº °æ¿ì¿¡ ÀÖ¾î ÀúÀÚ´Â À̸¦ »ç¿ëÇϱæ ÃßõÇÏ¸ç Æ¯È÷ ÅØ½ºÆ® ÆÄÀϳ»¿¡¼ µ¥ÀÌŸ¸¦ Á¤·ÄÇÒ ¶§´Â À̸¦ »ç¿ëÇÏ±æ ¹Ù¶õ´Ù.
UTF-8 À» ¾ð±ÞÇÏ´Â ÀÌÀ¯´Â ¾î¶² ¹ÙÀÌÆ® ½ÃÄö½º°¡ ºñÇÕ¹ýÀûÀÎ UTF-8 À̸ç À̰ÍÀÌ ¾Ç¿ëµÉ ¼ö ÀÖ´Â º¸¾È ±¸¸ÛÀÏ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. UTF-8 ÀÎÄÚ´õ´Â ``°¡´ÉÇÑ °¡Àå ªÀº" ÀÎÄÚµùÀ» »ç¿ëÇÑ´Ù°í ¾Ë·ÁÁ® ÀÖÁö¸¸ ¼øÁøÇÑ µðÄÚ´õ°¡ ÇÊ¿äÀÌ»óÀ¸·Î ±ä ÀÎÄÚµùÀ» ¹Þ¾ÆµéÀÏ ¼öµµ ÀÖ´Ù. °ø°ÝÀÚ°¡ ÀǵµÀûÀ¸·Î º°³ª°Ô ±ä Æ÷¸ËÀ» »ý¼ºÇϸé ÀÔ·Â °Ë»ç±â°¡ ÀÌ·¯ÇÑ ¹®Á¦¸¦ ¾Ë¾ÆÃ¤Áö ¸øÇÒ ¼ö ÀÖ´Ù. RFC ´Â ´ÙÀ½°ú °°ÀÌ ¹®Á¦Á¡À» ±â¼úÇϰí ÀÖ´Ù:
UTF-8 À» ±¸ÇöÇÑ »ç¶÷Àº ºñÇÕ¹ýÀûÀÎ UTF-8 ½ÃÄö½º ó¸® ¹æ¹ýÀÇ º¸¾È Ãø¸éÀ» °í·ÁÇÒ Çʿ䰡 ÀÖ´Ù. ¾î¶² °æ¿ì¿¡ ÀÖ¾î °ø°ÝÀÚ°¡ UTF-8 ÆÄ¼¿¡ UTF-8 ±¸¹®¿¡¼ Çã¿ëµÇÁö ¾Ê´Â ¿ÁÅÝ (ÆÈÁß¼ö, octet) ½ÃÄö½º¸¦ º¸³¿À¸·Î½á Á¶½É¼º¾ø´Â ÆÄ¼¸¦ ¾Ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀ̶ó°í »ó»óÇÒ ¼ö ÀÖ´Ù.
ƯÈ÷ ¹Ì¹¦ÇÑ ÇüÅÂÀÇ ÀÌ °ø°ÝÀÌ UTF-8 ·Î ÀÎÄÚµåµÈ ÀÔ·Â Æû¿¡ ´ëÇØ º¸¾È¿¡ Áß´ëÇÑ À¯È¿¼º °Ë»ç¸¦ ¼öÇàÇÏÁö¸¸ ¾î¶² ºñÇÕ¹ýÀûÀÎ ¿ÁÅÝ ½ÃÄö½º¸¦ ¹®ÀÚ·Î ÇØ¼®ÇÏ´Â ÆÄ¼¿¡ ´ëÇÑ °ø°ÝÀ¸·Î ¼öÇàµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ½Ì±Û ¿ÁÅÝ ½ÃÄö½º 00 À¸·Î ÀÎÄÚµåµÉ ¶§´Â NUL ¹®ÀÚ¸¦ ±ÝÁöÇÏÁö¸¸ C0 80 (ÇÊ¿äÀÌ»óÀ¸·Î ±æ±â¶§¹®¿¡ ºñÇÕ¹ýÀûÀÌ´Ù) ÀÇ ºñÇÕ¹ýÀûÀÎ µÎ ¿ÁÅÝ ½ÃÄö½º´Â Çã¿ëÇØ¼ À̸¦ NUL ¹®ÀÚ (00) À¸·Î ÇØ¼®ÇÒ ¼öµµ ÀÖ´Ù. ´Ù¸¥ ¿¹´Â ¿ÁÅÝ ½ÃÄö½º 2F 2E 2E 2F (/../) ¸¦ ±ÝÁöÇÏÁö¸¸ ¾ÆÁ÷±îÁö´Â ºñÇÕ¹ýÀûÀÎ ¿ÁÅÝ ½ÃÄö½º 2F C0 AE 2E 2F ¸¦ Çã¿ëÇÏ´Â ÆÄ¼ÀÏ °ÍÀÌ´Ù.
ÀÌ¿¡ ´ëÇÑ ´õ¿í ÀÚ¼¼ÇÑ ³íÀÇ´Â http://www.cl.cam.ac.uk/~mgk25/unicode.html ¿¡¼ Marjus Kuhn ÀÇ UTF-8 and Unicode FAQ for Unis/Linux ·ÎºÎÅÍ ¾òÀ» ¼ö ÀÖ´Ù.
µû¶ó¼ UTF-8 ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÏ ¶§ À¯È¿ÇÑ UTF-8 ÀÎÁö¸¦ °Ë»çÇÒ Çʿ䰡 ÀÖ´Ù. Ç¥ 4-1 Àº ¸ðµç ÇÕ¹ýÀûÀÎ UTF-8 ½ÃÄö½º ¸ñ·ÏÀÌ´Ù; ÀÌ Ç¥¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â ¸ðµç ¹®ÀÚ ½ÃÄö½º´Â ÇÕ¹ýÀûÀÎ UTF-8 ½ÃÄö½º°¡ ¾Æ´Ï´Ù. Ç¥¿¡¼ ù ¼¼ ÇàÀº 2Áø¹ý, 16Áø¹ý ¹× 8Áø¹ý¿¡¼ÀÇ ÇÕ¹ýÀûÀÎ UTF-8 ½ÃÄö½º¸¦ ¿°ÅÇϰí ÀÖ´Ù. ¸¶Áö¸· ÇàÀº ½ÃÄö½º°¡ ÀÎÄÚµå (16Áø¹ý) µÇ´Â UCS ÄÚµå ¹üÀ§¸¦ ¿°ÅÇϰí ÀÖ´Ù. 2Áø¹ý ¿¿¡¼ "x" ´Â 0 ¶Ç´Â 1 ÀÌ ½ÃÄö½º³»¿¡¼ ÇÕ¹ýÀûÀÓÀ» ³ªÅ¸³½´Ù. ´Ù¸¥ ¿¿¡¼ "-" ´Â ÇÕ¹ýÀûÀÎ °ªÀÇ ¹üÀ§¸¦ ³ªÅ¸³½´Ù. ¹°·Ð ½ÃÄö½º°¡ ÇÕ¹ýÀûÀÎ UTF-8 ½ÃÄö½º¶ó°í ÇØ¼ À̸¦ ¼ö¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù (ÀÌ Ã¥¿¡¼ ³íÀÇµÈ ´Ù¸¥ ¹®Á¦µéÀ» º¸¶ó).
표 4-1. ÇÕ¹ýÀûÀÎ UTF-8 ½ÃÄö½º
Binary | Hexadecimal | Octal | Decimal | UCS Code (Hex) |
---|---|---|---|---|
0xxxxxxx | 00-7F | 0-177 | 0-127 | 0000000-0000007F |
110xxxxx 10xxxxxx | C0-DF 80-BF | 300-337 200-277 | 192-223 128-191 | 00000080-000007FF |
1110xxxx 10xxxxxx 10xxxxxx | E0-EF 80-BF 80-BF | 340-357 200-277 200-277 | 224-239 128-191 128-191 | 00000800-0000FFFF |
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | F0-F7 80-BF 80-BF 80-BF | 360-367 200-277 200-277 200-277 | 240-247 128-191 128-191 128-191 | 00010000-001FFFFF |
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx | F8-FB 80-BF 80-BF 80-BF 80-BF | 370-373 200-277 200-277 200-277 200-277 | 248-251 128-191 128-191 128-191 128-191 | 00200000-03FFFFFF |
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx | FC-FD 80-BF 80-BF 80-BF 80-BF 80-BF | 374-375 200-277 200-277 200-277 200-277 200-277 | 252-253 128-191 128-191 128-191 128-191 128-191 | 04000000-7FFFFFFF |
¾î¶² °æ¿ì¿¡ ÀÖ¾î¼ 16Áø¹ý ½ÃÄö½º C0 80 À» ºÎÁÖÀÇÇÏ°Ô ÀÚ¸£°í (³»ºÎÀûÀ¸·Î »ç¿ëÇϰí) ½ÍÀ» ¼öµµ ÀÖ´Ù°í ÀúÀÚ´Â ¾ð±ÞÇØ¾ß ÇÑ´Ù. ÀÌ´Â Çã¿ëµÇ´Â °æ¿ì ¾Æ½ºÅ° NUL (NIL) À» ³ªÅ¸³¾ ¼ö ÀÖ´Â ³Ê¹« ±ä ½ÃÄö½ºÀÌ´Ù. C ¿Í C++ ¿¡¼ º¸Åë ¹®ÀÚ¿¿¡ NIL ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ´Â °ÍÀº ¹®Á¦°¡ »ý±â±â ¶§¹®¿¡ NIL À» µ¥ÀÌŸ ½ºÆ®¸²ÀÇ ÀϺκÐÀ¸·Î ³ªÅ¸³»±æ ¿øÇÒ ¶§ ÀÌ ½ÃÄö½º¸¦ »ç¿ëÇØ¿Ô´Ù; ÀÚ¹ÙÁ¶Â÷µµ ÀÌ·¯ÇÑ ¿¹¸¦ »ç¿ëÇϰí ÀÖ´Ù. µ¥ÀÌŸ¸¦ ó¸®ÇÒ ¶§ C0 80 À» ³»ºÎÀûÀ¸·Î´Â ÀÚÀ¯·Ó°Ô »ç¿ëÇØ¶ó ±×·¯³ª ±â¼úÀûÀ¸·Î À̸¦ µ¥ÀÌŸ¿¡ ÀúÀåÇϱâ Àü¿¡ ´Ù½Ã 00 À¸·Î ½ÇÁ¦ÀûÀ¸·Î ÀüÈ¯ÇØ¾ß ÇÑ´Ù. Çʿ信 µû¶ó UTF-8 µ¥ÀÌŸ ½ºÆ®¸²³»ÀÇ ÀÔ·ÂÀ¸·Î C0 80 À» ºÎÁÖÀÇÇÏ°Ô ¹Þ¾ÆµéÀÏ ¼öµµ ÀÖ´Ù. ÀÌ ½ÃÄö½º´Â »óÈ£¿î¿ë¼º¿¡ µµ¿òÀ» Áֱ⠶§¹®¿¡ º¸¾È¿¡ ÇØ¸¦ ³¢Ä¡Áö ¾Ê´Â´Ù¸é ÀÌ ½ÃÄö½º¸¦ ¼ö¿ëÇÏ´Â °ÍÀÌ ¾Æ¸¶µµ ÁÁÀº ½À°üÀÌ´Ù.
UTF-8 ¹®ÀÚ¼ÂÀº ºñÇÕ¹ýÀûÀÎ °ªÀ» ÇϳªÇϳª ¿°ÅÇÒ ¼ö ÀÖ´Â (±×¸®°í À̵éÀ» ¸ðµÎ ¿°ÅÇß´ÂÁö ÀÔÁõÇÒ ¼ö ÀÖ´Â) ÇÑ °æ¿ìÀÌ´Ù. µÎ°¡Áö »ç½ÇÀ» °Ë»çÇÔÀ¸·Î½á ºñÇÕ¹ýÀûÀÎ ½ÃÄö½º¸¦ ŽÁöÇÑ´Ù: (1) Ãʱ⠽ÃÄö½º°¡ ÇÕ¹ýÀûÀÎÁö (2) ±×·¸´Ù¸é À¯È¿ÇÑ ¿¬¼Ó ¹®ÀÚÀÇ ¿ä±¸µÈ ¼öÀÇ Ã¹ ¹øÂ° ¹ÙÀÌÆ®°¡ ÇÕ¹ýÀûÀÎÁö? ù¹øÂ° °Ë»ç´Â ½±´Ù: ´ÙÀ½Àº ¾Æ¸¶µµ ºñÇÕ¹ýÀûÀÎ UTF-8 Ãʱ⠽ÃÄö½ºÀÇ ¿Ïº®ÇÑ ¸ñ·ÏÀÌ´Ù.
표 4-2. ºñÇÕ¹ýÀûÀÎ UTF-8 Ãʱ⠽ÃÄö½º
UTF-8 Sequence | Reason for Illegality |
---|---|
10xxxxxx | illegal as initial byte of character (80..BF) |
1100000x | illegal, overlong (C0 80..BF) |
11100000 100xxxxx | illegal, overlong (E0 80..9F) |
11110000 1000xxxx | illegal, overlong (F0 80..8F) |
11111000 10000xxx | illegal, overlong (F8 80..87) |
11111100 100000xx | illegal, overlong (FC 80..83) |
1111111x | illegal; prohibited by spec |
µÎ ¹øÂ°´Â ¹®ÀÚ¿¿¡ Á¤È®ÇÑ ¼öÀÇ ¿¬¼Ó ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖ´Â Áö¸¦ °Ë»çÇÏ´Â °ÍÀÌ´Ù. ù¹øÂ° ¹ÙÀÌÆ®°¡ »óÀ§ 2ºñÆ®¸¦ ¼³Á¤ÇÑ´Ù¸é »óÀ§ ºñÆ® ´ÙÀ½ÀÇ "one" ºñÆ®ÀÇ ¼ö¸¦ ¼¼°í ´ÙÀ½¿¡ "10" ºñÆ®·Î ½ÃÀÛÇÏ´Â ¿¬¼Ó ¹ÙÀÌÆ®°¡ ±×¸¸Å ÀÖ´Â Áö¸¦ °Ë»çÇØ¶ó. ÀÌÁø¼ö 11100001 Àº µÎ°³ ÀÌ»óÀÇ ¿¬¼Ó ¹ÙÀÌÆ®¸¦ ÇÊ¿ä·Î ÇÑ´Ù.
C0 80 Àº ±â¼úÀûÀ¸·Î ºñÇÕ¹ýÀûÀÎ UTF-8 ½ÃÄö½ºÀÌÁö¸¸ »óÈ£¿î¿ë¼ºÀ» À§ÇØ ¹®ÀÚ 0 (NIL) ÀÇ µ¿ÀǾî·Î À̸¦ ¼ö¿ëÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ Àý¿¡¼´Â UTF-8 À» ±â¼úÇߴµ¥ ÀÌ´Â °¡Àå ³Î¸® ¾²ÀÌ´Â UCS ¸ÖƼ¹ÙÀÌÆ® ÀÎÄÚµùÀ̱⠶§¹®ÀÌ´Ù. ÀÌ´Â ¸¹Àº ±¹Á¦È ÅØ½ºÆ® ó¸® ¹®Á¦¸¦ °£´ÜÇÏ°Ô ÇÑ´Ù. ±×·¯³ª UTF-8 ¸¸ÀÌ À¯ÀÏÇÑ ÀÎÄÚµùÀº ¾Æ´Ï¸ç UTF-8 °ú °°Àº Á¾·ùÀÇ ¹®Á¦Á¡À» °®°í °°Àº ¿¬À¯·Î ÀÎÇØ À¯È¿¼ºÀ» Æò°¡ÇØ¾ß ÇÏ´Â UTF-16 °ú UTF-7 °ú °°Àº ´Ù¸¥ ÀÎÄÚµùµµ ÀÖ´Ù.
´Ù¸¥ ¹®Á¦´Â ISO 10646/À¯´ÏÄڵ忡¼ ÇѰ¡Áö ÀÌ»óÀÇ ¹æ¹ýÀ¸·Î ¾î¶² ±¸ (phrase) °¡ Ç¥ÇöµÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ¾î¶² °Á¶µÈ ¹®ÀÚ´Â ¾Ç¼¾Æ®¸¦ °®´Â ÇϳªÀÇ ¹®ÀÚ ¹× ÀÏ·ÃÀÇ ¹®ÀÚ (±âº» ¹®ÀÚ + º°µµÀÇ ±¸¼º ¾Ç¼¾Æ®) ·Î Ç¥ÇöµÉ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ µÎ ÇüÅ´ µ¿ÀÏÇÏ°Ô ³ªÅ¸³¯ ¼öµµ ÀÖ´Ù. ¶ÇÇÑ ³¢¿ö ³ÖÀ» ¼ö ÀÖ´Â zero-width °ø¹éÀ¸·Î ÀÌ´Â ¿Ü°ü»ó À¯»çÇÑ ¾ÆÀÌÅÛÀÌ ´Ù¸£°Ô »ý°¢µÇµµ·Ï ÇÑ´Ù. ÀÌ·¯ÇÑ ¼û°ÜÁø ÅØ½ºÆ®°¡ ÇÁ·Î±×·¥À» ¹æÇØÇÒ ¼ö ÀÖ´Â »óȲÀ» Á¶½ÉÇØ¶ó. ÀÌ´Â ÀϹÝÀûÀ¸·Î ÇØ°áÇϱ⠾î·Á¿î ¹®Á¦ÀÌ´Ù; ´ëºÎºÐÀÇ ÇÁ·Î±×·¥ÀÌ Å¬¶óÀÌ¾ðÆ®°¡ ¿Ïº®È÷ Ưº°ÇÑ ½ÃÄö½º°¡ ³ªÅ¸³¯ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¾Ë ¼ö ÀÖ°Ô²û ¾ö°ÝÇÑ Á¦¾î¸¦ ÇÏÁö ¸øÇÑ´Ù (À̴ Ŭ¶óÀ̾ðÆ®ÀÇ ÆùÆ®, µð½ºÇ÷¹ÀÌ Æ¯¼º, ·ÎÄÉÀÏ µî¿¡ ÀÇÁ¸Çϱ⠶§¹®ÀÌ´Ù).