簡體   English   中英

了解Python中的unicode和編碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM