end*_*ess 3 python string encoding utf
我相信大多数熟悉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的"默认"编码方法?
谢谢!
Python 3区分文本和二进制数据.尽管没有指定特定的编码,但我保证文本是Unicode格式.所以它可能是UTF-8,或UTF-16,或UTF-32¹ - 但你甚至都不会注意到.
这里的要点是:你甚至不应该关心.如果要处理文本,则使用文本字符串并通过代码点访问它们(这是单个Unicode字符的编号,与内部UTF无关 - 可以在几个较小的代码单元中组织代码点).如果需要字节,则按字节使用b""
和访问它们.如果你想在特定编码的字节序列中有一个字符串,你可以使用.encode()
.
¹甚至是UTF-9,如果有人疯狂到足以在PDP-10上实现Python.