[英]Understanding unicode and encoding in Python
當我在python 2.7控制台中輸入以下內容時
>>>'áíóús'
'\xc3\xa1\xc3\xad\xc3\xb3\xc3\xbas'
>>>u'áíóús'
u'\xe1\xed\xf3\xfas'
我得到上面的輸出。 兩者有什么區別? 我了解unicode的基礎知識,以及不同類型的編碼(如UTF8,UTF16等)。但是,我不了解控制台上打印的內容或如何理解它。
u'áíóús'
是一串文本 。 您在REPL中看到的是該對象的規范表示 :
>>> print u'áíóús'
áíóús
>>> print repr(u'áíóús')
u'\xe1\xed\xf3\xfas'
像\\xe1
這樣的東西與每個字符的十六進制序號有關:
>>> [hex(ord(c)) for c in u'áíóús']
['0xe1', '0xed', '0xf3', '0xfa', '0x73']
只有最后一個字符在ascii范圍內,即在range(128)
序數,因此只有最后一個字符“ s”在Python 2.x中清晰可見:
>>> chr(0x73)
's'
'áíóús'
是一個字節字符串。 您看到的是相同文本字符的編碼,並且終端仿真器假定該編碼為:
>>> 'áíóús'
'\xc3\xa1\xc3\xad\xc3\xb3\xc3\xbas'
>>> u'áíóús'.encode('utf-8')
'\xc3\xa1\xc3\xad\xc3\xb3\xc3\xbas'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.