 |
|
|  |
Python 2.x ÇÑ±Û ÀÎÄÚµù °ü·Ã Á¤¸® |
|
|
 |
8³â Àü |
°³¿ä
ÆÄÀ̽ãÀº ¾ç³ðÀÌ ¸¸µç ¾ð¾î¶ó¼ ÇѱÛÀ» ¾µ¶§ °ñÄ¡¾ÆÇÁ´Ù (¾Æ´Ï, Çѱ۸¸ °ñÄ¡¾ÆÇÂ°Ô Áö¿ÁÀÇ ¾ð¾î CJK(chiness, japanese, korean)¸¦ Æ÷ÇÔÇÑ ¸ÖƼ¹ÙÀÌÆ® ¾ð¾î´Â ÀüºÎ ±×·¸°ÚÁö). ¿µ¾î¸¸ »ç¿ëÇÏ¸é º°·Î ½Å°æ¾µ°Ô ¾øÁö¸¸ ÇѱÛÀº euc-kr, utf-8ÀÌ °øÁ¸ÇÏÁö ¾Ê´Â°¡?
±×³É °ñÄ¡¾ÆÇ°͵µ ¾Æ´Ï°í unicode¿Í Á¶ÇյǼµµ °ñÄ¡¾ÆÇÁ´Ù. unicode°ü·Ã ºÎºÐÀÇ °æ¿ì, ÃÖÃʺÎÅÍ Áö¿øÇÑ°Ô ¾Æ´Ï¶ó ÆÄÀ̽ã 2.4(¿³´ø°¡?)ºÎÅÍ Áö¿øÀÌ Ãß°¡µÇ¾î¼ ¹®ÀÚ¿À» ÀǹÌÇϴ ŸÀÔÀÌ str°ú unicode°¡ Á¸ÀçÇؼ ´õ °ñÄ¡¾ÆÇÁ´Ù. ÀÌ·± ¹®Á¦´Â ÆÄÀ̽ã 3.X·Î °¡¸é °ÅÀÇ ¾ø¾îÁöÁö¸¸(±× µ¿³×´Â unicode·Î ÅëÀÏ됏´Ù°íÇÏ´õ¶ó.) ¿ÜºÎ ¶óÀ̺귯¸®¶óµç°¡ ±âŸ »çÁ¤»ó ÆÄÀ̽ã 2.x¸¦ ½á¾ßµÇ´Â ȯ°æµµ ¾ÆÁ÷ ¸¹ÀÌ ³²¾ÆÀÖ¾î¼ ³»°¡ »ðÁúÇß´ø°É Çѹø Á¤¸®ÇغôÙ.
python script¿¡ ÇÑ±Û »ç¿ëÇϱâ
print 'ÇѱÛ'
python ½ºÅ©¸³Æ® ÆÄÀÏ¿¡ À§ÀÇ ³»¿ëÀ» Àû°í ½ÇÇàÇغ¸ÀÚ. ¾Æ·¡¿Í °°Àº ¿¡·¯°¡ ³ª¿Â´Ù.
SyntaxError: Non-ASCII character '\xc7' in file euckr-error.py on line 1, but no
encoding declared; see http://www.python.org/peps/pep-0263.html for details
ÆÄÀ̽ãÀÇ ±âº» ÀÎÄÚµùÀº asciiÀÌ´Ù. ½ºÅ©¸³Æ® ÆÄÀÏÀÌ ascii ÀÎÄÚµùÀϰŶó°í °¡Á¤ÇÏ°í ÀÐ¾î¼ ÆĽÌÇÒ¶ó°í Çϴµ¥ ascii·Î Çؼ®ÀÌ ºÒ°¡´ÉÇÑ ÇѱÛÀ̶ó´Â ´Ü¾î°¡ Á¸ÀçÇϱâ 떄¹®¿¡ SyntaxError(¹®¹ý¿¡·¯)°¡ ¹ß»ýÇÑ °ÍÀÌ´Ù. À̸¦ ÇØ°áÇϱâ À§Çؼ´Â ¾Æ·¡¿Í °°ÀÌ ½ºÅ©¸³Æ® ÆÄÀÏ Ã¹ÁÙ¿¡ ÆÄÀÏÀÇ ÀÎÄÚµùÀ» ¸í½ÃÇØÁÖ¸é µÈ´Ù.
#-*- coding: utf-8 -*-
print 'ÇѱÛ'
#-*- coding: euc-kr -*-
print 'ÇѱÛ'
str - unicode º¯È¯
s = 'english'
print str(unicode(s))
À§¿Í °°ÀÌ ¿µ¾î ¹®ÀÚ¿À» Unicode·Î ¹Ù꿧´Ù°¡ str·Î ¹Ù²Ù´Â Äڵ带 ½ÇÇàÇϸé Àß µ¹¾Æ°£´Ù. ±×·¯¸é ÇѱÛÀ» Áý¾î³Ö°í µ¹·Áº¸ÀÚ.
#-*- coding: utf-8 -*-
s = 'ÇѱÛ'
print str(unicode(s))
print str(unicode(s))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc7 in position 0: ordinal
not in range(128)
µÚÁø´Ù. ÈÊ. ±×·¡¾ß Çѱ۴äÁö. ¿¡·¯¸¦ º¸¸é UnicodeDecodeError(À¯´ÏÄÚµå Çؼ® ¿¡·¯)°¡ ¹ß»ýÇÑ´Ù. python script¿¡ ÇÑ±Û »ç¿ëÇϱâ¿Í´Â ´Ù¸¥ ¿¡·¯´Ù. À̹ø¿¡ ¹ß»ýÇÑ ¿¡·¯¸¦ Çؼ®ÇÏÀÚ¸é 'ÇѱÛ'À» ascii¶ó°í °£ÁÖÇÏ°í À¯´ÏÄÚµå·Î º¯È¯ÇÏ·Á°í ½ÃµµÇßÀ¸³ª Çؼ®ÀÌ ¾ÈµÇ¼ ¹ß»ýÇÑ ¿¡·¯ÀÌ´Ù. À̸¦ ÇØ°áÇϱâ À§Çؼ´Â ¾Æ·¡ÀÇ ¼Ò½º¿Í °°ÀÌ ¸í½ÃÀûÀ¸·Î ¹®ÀÚ¿À» utf-8·Î °£ÁÖÇÏ°í unicode·Î º¯È¯Çϵµ·Ï ÇÒ¼öÀÖ´Ù.
#-*- coding: utf-8 -*-
s = 'ÇѱÛ'
print s.decode('utf-8').encode('utf-8')
ÇÏÁö¸¸ À§ÀÇ ¼Ò½º´Â ¸¸´ÉÀÌ ¾Æ´Ï´Ù. ¿ÜºÎ ¶óÀ̺귯¸®¸¦ ¸¸µç »ç¶÷ÀÌ ¹®ÀÚ¿À» À¯´ÏÄÚµå·Î, À¯´ÏÄڵ带 ¹®ÀÚ¿·Î º¯È¯ÇÒ¶§ ÀÎÄÚµùÀ» ¸í½ÃÀûÀ¸·Î ÀûÁö ¾Ê¾Ñ´Ù°í °¡Á¤ÇÏÀÚ. ¾ç³ðÀÌ ±×·±ÄÚµùÀ» ÇßÀ¸¸é ÀÚ½ÅÀÇ È¯°æ¿¡¼´Â ¹®Á¦¾øÀÌ Àß ÀÛµ¿ÇÑ´Ù. (¾Æ·¡Äڵ尡 ¿¹½Ã)
foo = unicode(s)
...
bar = str(foo)
ÇÏÁö¸¸, ¾ç³ðÀÌ ¸¸µç ¶óÀ̺귯¸®¸¦ ¿ì¸®°¡ °¡Á®´Ù »ç¿ëÇϴµ¥ ÇÔ¼öÀÇ ÀÎÀÚ·Î ÇѱÛÀ» »ç¿ëÇÏ°Ô µÈ´Ù¸é ¾î¶³±î? À§¿¡¼ À̾߱âÇÑ°Í°ú °°ÀÌ UnicodeDecodeError°¡ ¹ß»ýÇÏ°í ¸ÁÇÑ´Ù. À̸¦ ÇØ°áÇÏ°Ù´Ù°í ¶óÀ̺귯¸®¿¡¼ À¯´ÏÄÚµå °ü·Ã ÀÎÄÚµù/µðÄÚµùÇÏ´Â ÁöÁ¡¿¡ ÀüºÎ ÀÎÄÚµùÀ» ¸í½ÃÀûÀ¸·Î Àû¾îÁÖ´Â°Ç »ç¶÷ÀÌ ÇÒ ÁþÀÌ ¾Æ´Ï´Ù. ¸¸¾à Unicode·Î ÀÎÄÚµù/µðÄÚµùÇÒ¶§ »ç¿ëÇÒ ±âº» ÀÎÄÚµùÀ» ascii´ë½Å utf-8·Î ¹Ù²ãÁÖ¸é ½±°Ô ÇØ°áÇÒ¼ö ÀÖÁö ¾ÊÀ»±î? sys.setdefaultencoding°¡ ¹Ù·Î ÀÌ·² ¶§ »ç¿ëÇÏ´Â ÇÔ¼öÀÌ´Ù.
#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
s = 'ÇѱÛ'
print str(unicode(s))
À§¿Í °°ÀÌ ±âº» ÀÎÄÚµùÀ» ascii´ë½Å utf-8·Î ¹Ù²ãÁÖ´Â ³»¿ëÀ» ½ºÅ©¸³Æ® ÆÄÀÏÀ» ÃÖÃÊ ÁøÀԺο¡ Áý¾î³ÖÀ¸¸é µÈ´Ù. #-*- coding: utf-8 -*-°ú ´Þ¸® Àú°ÍÀº ÇÔ¼ö¶ó¼ È£ÃâµÈ ÀÌÈÄ, °è¼Ó À¯ÁöµÈ´Ù. ÀûÀýÇÑ°÷¿¡ Çѹø¸¸ ³Ö¾îÁÖ¸é µÈ´Ù. Âü°í·Î reload(sys)¸¦ ÇÏÁö ¾ÊÀ¸¸é sys.setdefaultencodingÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. |
|
̵̧ : 437 |
̵̧
¸ñ·Ï
|
|
|  |
|