Unicode 文本解码器的输出是什么

Unicode 文本解码器的输出是什么,unicode,decode,encode,codec,python-unicode,Unicode,Decode,Encode,Codec,Python Unicode,嗨,我知道这听起来是个愚蠢的问题,但它实际上让我困惑,就像文本解码器给了我什么? 我可以理解,对于音频/视频解码器,它提供的样本可以转换为输出设备输出的模拟数据 但我实际上无法理解文本解码器给出了什么,以及如何使用任何编码方案对任何解码文本进行编码 您假定文本没有编码方案。这是错误的。有几十个。例如,字符噸在一些流行编码中作为八位字节序列: UTF-8:0xe5 0x99 0xb8 UTF-16-BE:0x56 0x78 GB18030:0x87 0x8d US-ASCII:不可能,字符不属于

嗨,我知道这听起来是个愚蠢的问题,但它实际上让我困惑,就像文本解码器给了我什么? 我可以理解,对于音频/视频解码器,它提供的样本可以转换为输出设备输出的模拟数据


但我实际上无法理解文本解码器给出了什么,以及如何使用任何编码方案对任何解码文本进行编码

您假定文本没有编码方案。这是错误的。有几十个。例如,字符
在一些流行编码中作为八位字节序列:

  • UTF-8:0xe5 0x99 0xb8
  • UTF-16-BE:0x56 0x78
  • GB18030:0x87 0x8d
  • US-ASCII:不可能,字符不属于编码的字符库
  • 拉丁语9:不可能,字符不属于编码的字符库
另一个:
ß

  • UTF-8:0xc3 0x9f
  • UTF-16-BE:0x00 0xdf
  • GB18030:0x81 0x30 0x89 0x38
  • US-ASCII:不可能,字符不属于编码的字符库
  • 拉丁语9:0xdf
另一个:
u

  • UTF-8:0x75
  • UTF-16-BE:0x00 0x75
  • GB18030:0x75
  • US-ASCII:0x75
  • 拉丁文9:0x75
手动验证!下载此网页,在十六进制编辑器中打开,并尝试查找上面的UTF-8序列

文本解码器将八位字节作为输入,并再次将它们转换为可用文本。

您可能还没有注意到这个概念,因为到目前为止您只处理拉丁字符,尽管您忽略了对文本编码和解码的关注,但一切都没有明显的问题。这是因为从上一个示例中可以看到,许多编码在某种程度上与granddaddy US-ASCII向后兼容

与许多其他编程语言一样,Python在很大程度上遵循Unicode,其文本处理模型也是如此。将文本作为一系列字符或图形(在编程语言中)和编码文本作为一系列八位字节(在编程语言之外,在磁盘文件、标准I/O流、数据库、命令行参数、环境变量、网络套接字等中)进行清晰分离是非常必要的,否则,当您尝试确定文本的大小或尝试换行时,会得到错误的结果

文本编解码器是这些世界之间的精确边界