我相信大多数熟悉Python的人都读过Dive Into Python 3.在第4.3章中,它说:
在Python 3中,所有字符串都是Unicode字符序列。没有用UTF-8编码的Python字符串或编码为CP-1252的Python字符串。 “这个字符串是UTF-8吗?”是一个无效的问题。
我知道这意味着什么:字符串= Unicode集中的字符,Python可以帮助您根据不同的编码方法对字符进行编码。但是,Pythons中的字符是否仍然作为字节存储在计算机中?例如,s ='strings',s肯定存储在我的计算机中作为字节strem'0100100101 ......'或其他什么。那么这里使用的编码方法是什么 - Python的“默认”编码方法?
谢谢!
答案 0 :(得分:7)
Python 3区分 text 和binary data 。尽管没有指定特定的编码,但我保证文本是Unicode格式。所以它可能是UTF-8,或UTF-16,或UTF-32¹ - 但你甚至都不会注意到。
这里的要点是:你甚至不应该关心。如果你想处理文本,那么使用文本字符串并通过代码点访问它们(这是一个Unicode字符的编号,独立于内部UTF - 可以用几个较小的代码单位组织代码点)。如果需要字节,请使用b""
并按字节访问它们。如果您希望在特定编码的字节序列中包含字符串,则使用.encode()
。
¹甚至是UTF-9,如果有人疯狂到在PDP-10上实现Python。