unipre用于处理 文本 。文本是一个 代码点 序列, 可能大于一个字节 。文本可以被 编码
在一个特定的编码来表示文本作为原始字节(例如
utf-8,
latin-1…)。
注意,这
unipre是没有编码的 !python使用的内部表示形式是实现细节,只要它能够表示所需的代码点,您就不必在意它。
相反,
str在Python 2中是 字节 的简单序列。它不代表文字!
您可以将其
unipre视为某些文本的一般表示形式,可以用多种不同方式将其编码为通过表示的二进制数据序列
str。
注意:在Python 3中,unipre
已重命名为,str
并且bytes
为普通字节序列提供了一种新类型。
您可以看到一些差异:
>>> len(u'à') # a single pre point1>>> len('à') # by default utf-8 -> takes two bytes2>>> len(u'à'.enpre('utf-8'))2>>> len(u'à'.enpre('latin1')) # in latin1 it takes one byte1>>> print u'à'.enpre('utf-8') # terminal encoding is utf-8à>>> print u'à'.enpre('latin1') # it cannot understand the latin1 byte�请注意,使用时,
str可以对特定编码表示形式的单个字节进行较低级别的控制,而使用时
unipre,只能在代码点级别进行控制。例如,您可以执行以下操作:
>>> 'àèìòù''xc3xa0xc3xa8xc3xacxc3xb2xc3xb9'>>> print 'àèìòù'.replace('xa8', '')à�ìòù以前是有效的UTF-8,现在已经不复存在了。使用unipre字符串,您不能以结果字符串不是有效的unipre文本的方式进行操作。您可以删除代码点,将代码点替换为其他代码点等,但不能与内部表示混淆。



