【发布时间】:2019-08-24 15:28:02
【问题描述】:
据我了解,Python3 字符串是经过解码以供人类阅读的字节序列,而 Python3 字节对象是人类不可读的原始字节。然而,我难以理解的是,用 UTF-8 或 ASCII 编码的字符串如何显示为以 b 为前缀的字符串,而不是字节序列
string = "I am a string"
# prints a sequence of bytes, like I would expect
string.encode("UTF-16")
b'\xff\xfeI\x00 \x00a\x00m\x00 \x00a\x00 \x00s\x00t\x00r\x00i\x00n\x00g\x00'
# Prints a sequence of human readable characters, which I don't understand
string.encode("UTF-8")
b'I am a string'
为什么 UTF-8 或 ASCII 编码的字符串不显示字节序列?
【问题讨论】:
-
"为什么 UTF-8 或 ASCII 编码的字符串不显示字节序列?" - 提示在问题中。 “显示”的内容 HAS 是一种设计选择,那么,您是否愿意将字节字符串视为我们可以理解的数字或字节字符串。 :P