2012-03-15 60 views
3

我相信你們大多數人誰是熟悉Python已經閱讀深入Python 3第二章4.3,它說這個:python如何在計算機中存儲字符串?

在Python 3,所有的字符串都是Unicode字符序列。不存在以UTF-8編碼的Python字符串或編碼爲CP-1252的Python字符串。 「這個字符串是UTF-8嗎?」是一個無效的問題。

不知怎的,我明白這是什麼意思:strings = Unicode集中的字符,Python可以幫助您根據不同的編碼方法對字符進行編碼。然而,Pythons中的字符是否以字節的形式存儲在計算機中呢?例如,s ='strings',並且s肯定存儲在我的計算機中,作爲字節strem'0100100101 ...'或其他。那麼這裏使用的編碼方法是什麼 - Python的「默認」編碼方法?

謝謝!

+3

除了計算機上的字節外,還有其他方法可以存儲_anything_嗎? – Kimvais 2012-03-15 08:13:19

+1

同樣的問題已經被問到:http://stackoverflow.com/questions/1838170/what-is-internal-representation-of-string-in-python-3-x – citxx 2012-03-15 08:14:27

回答

7

Python 3區分文本和二進制文件數據。據我所知,文本保證採用Unicode,儘管沒有指定具體的編碼。所以它可能是UTF-8,或UTF-16或UTF-32¹ - 但你甚至不會注意到。

這裏的要點是:你甚至不應該在意。如果你想處理文本,然後使用文本字符串,並通過代碼點(這是一個單一的Unicode字符的數字和獨立於內部的UTF - 它可以在幾個較小的代碼單位)組織代碼點的數字訪問它們。如果您需要字節,則使用b""並按字節訪問它們。如果您想要以特定編碼的字節序列中的字符串,則可以使用.encode()


¹或甚至UTF-9,如果有人瘋了,足以在PDP-10上實現Python。

+0

我已閱讀以下章節,我現在明白了。我甚至不應該在意。這是一個很好的觀點,謝謝。 – endless 2012-04-01 00:40:26

相關問題