´ÙÀ½ ÀÌÀü Â÷·Ê

10. ¼ÒÇÁÆ®¿þ¾î¸¦ ¾î¶»°Ô ¼öÁ¤Çؾ߸¸ Çϴ°¡?

UTF-8 Áö¿øÀ» À§ÇÑ µÎ °¡Áö Á¢±Ù ¹æ¹ýÀÌ ÀÖ´Ù. À̰ÍÀ» ¼ÒÇÁÆ® ¹× ÇÏµå º¯È¯À̶ó ºÎ¸£±â·Î ÇϰڴÙ. ¼ÒÇÁÆ® º¯È¯¿¡¼­ µ¥ÀÌÅÍ´Â UTF-8 Çü½ÄÀ¸·Î ¾îµð ¼­³ª º¸Á¸µÇ¸ç ´ÜÁö ¸Å¿ì ÀûÀº ¼öÀÇ ¼ÒÇÁÆ®¿þ¾î¸¸ º¯È­½Ãų Çʿ䰡 ÀÖ´Ù. ÇÏµå º¯È¯¿¡¼­ ÇÁ·Î±×·¥ÀÌ ÀоîµéÀÌ´Â UTF-8 µ¥ÀÌÅÍ´Â ÆøÀÌ Å«(wide) ¹®ÀÚ ¹è¿­·Î º¯È¯ µÉ °ÍÀ̸ç, ¶ÇÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ³»ºÎÀÇ ¾î´À °÷¿¡¼­µµ ó¸®µÉ °ÍÀÌ´Ù.

´ëºÎºÐÀÇ ¾ÖÇø®ÄÉÀ̼ǵéÀº ´ÜÁö ¼ÒÇÁÆ® º¯È¯¸¸À¸·Îµµ Àß µ¿ÀÛÇÑ´Ù. ¼ÒÇÁÆ® º¯È¯Àº À¯´Ð½º »ó¿¡¼­ UTF-8À» ¹Þ¾ÆµéÀÏ ¼ö ÀÖ°Ô ÇÏ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¸é, cat°ú echo¿Í °°Àº ÇÁ·Î±×·¥µéÀº ÀüÇô ¼öÁ¤ÇÒ Çʿ䰡 ¾ø´Ù. ±×°ÍµéÀº ÀÔÃâ·ÂÀÌ ISO 8859-2 À̵ç UTF-8ÀÌµç »ó°ü¾øÀÌ ¿Ïº®ÇÏ°Ô ¹«½ÃÇÑ´Ù. ¿Ö³ÄÇϸé, ±×°ÍµéÀº ÀÔÃâ·ÂÀ» ÇÁ·Î¼¼½ºÈ­ÇÏÁö ¾Ê°í ´Ü Áö ¹ÙÀÌÆ® ½ºÆ®¸²À» Ãë±ÞÇϱ⠶§¹®ÀÌ´Ù. ±×°ÍµéÀº ¿ÀÁ÷ UTF-8 »ó¿¡¼­ ¾î¶° ÇÑ º¯È­µµ ÀϾÁö ¾Ê´Â '\n'°ú °°Àº Á¦¾î ÄÚµå¿Í ASCII ¹® ÀÚ¸¸ ÀνÄÇÑ´Ù. ±×·¯¹Ç·Î UTF-8 ÀÎÄÚµù ¹× µðÄÚµùÀº Å͹̳Π¿¡¹Ä·¹ÀÌÅÍ¿¡¼­ µ¿ÀÛÇÏ´Â ÀÌ·¯ÇÑ ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ¼­ ¿Ïº®ÇÏ°Ô ÀÌ·ç¾îÁø´Ù.

¹ÙÀÌÆ® ¼ö¸¦ °è»êÇÏ¿© ÇÑ ¹®ÀÚ¿­ ¾ÈÀÇ ¹®ÀÚ ¼ö¸¦ °áÁ¤ÇÏ´Â ¸ðµç ÇÁ·Î±× ·¥À» À§Çؼ­ ¾à°£ÀÇ ¼öÁ¤ÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. UTF-8 ¸ðµå¿¡¼­, ÇÁ·Î±×·¥µéÀº 0x80ºÎÅÍ 0xBF ¹üÀ§ »çÀÌÀÇ ¾î¶² ¹ÙÀÌÆ® ¼öµµ °è»êÇØ¼­´Â ¾ÈµÈ´Ù. ¿Ö³ÄÇϸé ÀÌ·¯ÇÑ ¹ÙÀÌÆ® ¼ö´Â ¿¬¼Ó ¹ÙÀÌÆ®(continuation bytes)ÀÌ¸ç ¼ÒÀ¯Çϰí ÀÖ´Â ¹®ÀÚ´Â ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. UTF-8°ú ÇÔ²² C¾ð¾îÀÇ strlen(s)ÇÔ ¼ö ¶ÇÇÑ ¹®ÀÚ¿­ ¾ÈÀÇ ¹®ÀÚ¼ö¸¦ ¹Ù¸£°Ô °è»êÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±× ´ë½Å, ¸¸ ¾à UTF-8 ·ÎÄÉÀÏÀÌ ¼±ÅõǾú´Ù¸é ¹®ÀÚ¼ö¸¦ °è»êÇϱâ À§ÇÏ¿© mbstowcs (NULL,s,0) ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¿¹¸¦ µé¾î, ls ÇÁ·Î±×·¥Àº ¼öÁ¤Çؾ߸¸ ÇÑ´Ù. ¿Ö³ÄÇÏ¸é ±× °ÍÀº µð·ºÅ丮¸¦ À¯Àú¿¡°Ô º¸¿©ÁÖ±â À§ÇÑ Å×À̺íÀÇ ·¹À̾ƿô ü°è¸¦ °®Ãß±â À§Çؼ­ ¹®ÀÚ¼ö¸¦ ÆÄÀϸíÀ¸·Î °è»êÇϱ⠶§¹®ÀÌ´Ù. ÀÌ¿Í À¯»çÇÏ°Ô °íÁ¤µÈ Æø À» °®´Â ÆùÆ®·Î Ãâ·ÂÇÏ°í ±× Ãâ·ÂÀ» Æ÷¸ËÇÏ´Â ÇÁ·Î±×·¥µéÀº ±×°Í¿¡ ¾Ë¸Â°Ô UTF-8 ÅØ½ºÆ® »óÀÇ ¹®ÀÚ ¼ö¸¦ °è»êÇϱâ À§ÇÑ ¹æ¹ýÀ» ¾Ë¾Æ¾ß¸¸ ÇÑ´Ù. ÇÑ ¹® ÀÚ¸¦ Áö¿ì´Â °Í°ú °°Àº ¿¡µðÅÍ ÇÔ¼ö´Â ÇÑ ¹®ÀÚ¿¡ ¼ÓÇÏ´Â ¸ðµç ¹ÙÀÌÆ®¸¦ Áö ¿ì±â À§Çؼ­ ¾à°£ ¼öÁ¤Çؾ߸¸ ÇÑ´Ù. ¿¹¸¦ µé¸é, ncurses ¶óÀÌ ºê·¯¸®¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ »Ó¸¸ ¾Æ´Ï¶ó vi³ª emacs¿Í °°Àº ¿¡µðÅÍ ¿ª½Ã ÀÌ¿Í ºñ½ÁÇÑ ¿µÇâÀ» ¹Þ´Â´Ù.

¸®´ª½º Ä¿³Î ¶ÇÇÑ ¼ÒÇÁÆ® º¯È¯¸¸À¸·Îµµ Àß µ¿ÀÛÇÒ ¼ö ÀÖÀ¸¸ç, UTF-8À» ¿Ïº®ÇÏ°Ô Áö¿øÇϱâ À§ÇÑ ¾ÆÁÖ ¾à°£ÀÇ ¼öÁ¤¸¸ ÇÊ¿äÇÏ´Ù. ¹®ÀÚ¿­(¿¹¸¦ µé¾î ÆÄÀϸí, ȯ°æ º¯¼ö µî)À» Ãë±ÞÇÏ´Â ´ëºÎºÐÀÇ Ä¿³Î ÇÔ¼öµéÀº ¿µÇâÀ» ¹ÞÁö ¾Ê ´Â´Ù. ´ÙÀ½°ú °°Àº °æ¿ì¿¡ ¼öÁ¤ÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ´Ù.


´ÙÀ½ ÀÌÀü Â÷·Ê