2011-11-26 59 views
0

在Linux中,我打開終端和輸入python2.7然後輸入代碼如下越來越糊塗:python2.7如何處理unicode?我

>>> s = u'\u0561' 
>>> print s 
ա 
>>> len(s) 
1 

u的長度「\ u0561」是隻有1?爲什麼?我瞭解到,每個非字母字符的長度都是unicode中的2〜4個字節,爲什麼它只使用1個字節?我測試了其他的unicode字符,我發現幾乎所有的unicode字符的長度都是1,爲什麼?

+1

讓我微笑:-) – aitchnyu

+1

只是爲了讓你感到困惑,請在狹窄的版本(即'sys.maxuincode == 0xffff'):'len(u'\ U00010000')'試試這個。 – eryksun

回答

7

len函數不計算字節數 - 它計算任何序列中的項數(在本例中爲字符串中的字符數)。

+2

要迂迴:'len'計算代碼單元的數量。 – Thanatos

0

它給你的字符長度,而不是字節。

\u0561 

這是一個字符,所以長度是一個。

1

u'\ u0561'的長度只有1?爲什麼?

因爲ա是一個字符。

換句話說,對於同樣的原因,的['hi mom this is an incredibly long string']len()爲1:因爲'hi mom this is an incredibly long string'是一個列表項。