文本和字节序列

本文详细探讨了Python中字符编码和解码的概念,包括Unicode、字节序列、编码器和解码器的选择。讲解了如何处理常见的编码解码问题,如UnicodeEncodeError和UnicodeDecodeError,并给出了避免这些问题的策略。强调了在处理文本时,应在输入时解码,处理过程中保持文本格式,输出时再编码,并避免依赖默认编码。同时,还提及了Unicode文本排序的原理和影响排序结果的因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符问题

  • 字符串是一个字符序列
  • 字符的最佳定义是Unicode字符
    在这里插入图片描述
  • decode即把字节序列转换为人类可读的文本序列;
  • encode即把字符串变成用于存储和传输的字节序列;

字节概要

  • Python内置两种基本的二进制序列:bytes类型和bytearray类型;
    在这里插入图片描述
  • 注意点;
    在这里插入图片描述
  • 二进制序列虽然是整数序列,但其字面量表示法中含有ASCII字符本身;
  • 字节的值的表示方法;
    在这里插入图片描述
  • memoryview用于共享内存,从而在访问其他二进制序列、打包的数组和缓冲中的数据切片时无需复制字节序列;

基本编解码器

  • Python自带了超过100种编解码器;

  • 不同编码器对字符的编码效果;
    在这里插入图片描述

  • 一些典型的编码类型;
    在这里插入图片描述

编码解码问题

  • UnicodeEncodeError
    把文本转换为字节序列时,如果目标编码中没有定义某个字符就会抛出该错误;
    在这里插入图片描述

  • UnicodeDecodeError
    字节序列可能会出现无效utf-8 or utf-16,所以在把二进制序列转换成文本时,遇到无法转换的字节可能会出现以上错误;
    很多陈旧的编码能够解码任何字节序列流而不抛出错误,但这样得到的是无用输出;
    在这里插入图片描述
    处理文本
    在这里插入图片描述

  • 在输入的时候将字节解码为字符;

  • 处理过程之中不进行编码解码操作;

  • 在输出的时候将输出的文本进行编码;

  • 在多台设备或者不同场合下运行的代码尽量不依赖默认编码;

  • 应当传入encoding参数避免多台设备默认编码方式不同的情况;

Unicode文本排序

  • Python比较任何类型的序列时会一一比较序列中的各个元素;
  • 字符串比较其码位;
  • 不同的排序规则会得到不同的排序结果;

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值