首页 > 解决方案 > 如何避免一直将字节解码为字符串?

问题描述

在我的项目中有一些包以字节形式返回值。有一些配置或环境变量需要设置,所以我不需要再将字节解码为字符串?如果是这样,那是什么?

标签: pythonpython-3.xencodingdecode

解决方案


默认情况下,Python 2 可以做你想做的事。

但让我建议:这不是人们真正想要的,这就是 Python 3 不会自动执行此操作的原因。

要将字节转换为 str,您需要知道字节的编码:

s = b.decode(coding)

要将 str 转换为字节,您还需要知道所需的编码:

b = s.encode(coding)

Python 2 假定编码 == 'ASCII' 因此适用于英语/纯 ASCII 文本,但在运行时引发了其他所有内容的异常。

所以,你要做的是:

  • 决定是否应该将某些内容作为文本处理(在这种情况下使用 str)或二进制(然后保留字节)
  • 尽早解码(加载后,接收字节)
  • 处理为 str
  • 延迟编码(在保存之前,发送字节)

现在 utf-8 编码是最流行的,所以如果您没有其他要求,请使用它。


推荐阅读