2012-03-15 63 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

相关问题