08 字符串与Unicode
8.1 文本字符串与字节字符串
-
数据一致以字节方式存储;
Unicode
使用4个字节来表示每个字符 -
两种不同的字符串
- 用于存储文本
- 存储原始字节
# str 包含一个 encode() 方法 返回 bytes text_str = "The quick brown fox jumped over the lay dogs." print(type(text_str)) print(text_str.encode("utf-8")) # bytes 实例 包含一个decode() 方法 返回 str text_str = b"The quick brown fox jumped over the lay dogs." print(type(text_str)) print(text_str.decode("utf-8"))
-
six
模块是一个以编写能够正确运行在python2
和python3
下的模块为中心的类库- 文本字符串类的别名
six.text_type
- 字节字符串类的别名
six.binary_type
- 文本字符串类的别名
8.2包含非ASCII字符的字符串
-
文本字符串的
repr
人类可读的汉字,而字节字符串的repr
是机器可读的;二者长度也不相同text_str = "你好," byte_str = text_str.encode("utf-8") # 占位字符 new_text_str = text_str.encode("ascii", "replace") print(len(text_str)) # 3 print(byte_str) # b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c' print(len(byte_str)) # 9
-
获取基于底层的首选编码
import locale print(locale.getpreferredencoding()) # cp936