文本解码器的输出是什么

时间:2018-07-03 17:58:38

标签: unicode decode encode codec python-unicode

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

但是我实际上无法理解文本解码器提供了什么以及如何将任何解码后的文本用于采用任何编码方案进行编码。

1 个答案:

答案 0 :(得分:1)

您假定没有针对文本的编码方案。错了有几十个。例如,字符是八位字节序列,采用几种流行的编码:

  • UTF-8:0xe5 0x99 0xb8
  • UTF-16-BE:0x56 0x78
  • GB18030:0x87 0x8d
  • US-ASCII:不可能,字符不属于编码的字符库
  • Latin9:不可能,该字符不属于编码的字符库

另一个:ß

  • UTF-8:0xc3 0x9f
  • UTF-16-BE:0x00 0xdf
  • GB18030:0x81 0x30 0x89 0x38
  • US-ASCII:不可能,字符不属于编码的字符库
  • Latin9:0xdf

另一个:u

  • UTF-8:0x75
  • UTF-16-BE:0x00 0x75
  • GB18030:0x75
  • US-ASCII:0x75
  • Latin9:0x75

手动验证!下载此网页,在十六进制编辑器中打开它,然后尝试找到上面的UTF-8序列。

文本解码器将八位字节作为输入,然后再次将其转换为可用的文本。

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

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

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

相关问题