python - 如何避免一直将字节解码为字符串?
问题描述
在我的项目中有一些包以字节形式返回值。有一些配置或环境变量需要设置,所以我不需要再将字节解码为字符串?如果是这样,那是什么?
解决方案
默认情况下,Python 2 可以做你想做的事。
但让我建议:这不是人们真正想要的,这就是 Python 3 不会自动执行此操作的原因。
要将字节转换为 str,您需要知道字节的编码:
s = b.decode(coding)
要将 str 转换为字节,您还需要知道所需的编码:
b = s.encode(coding)
Python 2 假定编码 == 'ASCII' 因此适用于英语/纯 ASCII 文本,但在运行时引发了其他所有内容的异常。
所以,你要做的是:
- 决定是否应该将某些内容作为文本处理(在这种情况下使用 str)或二进制(然后保留字节)
- 尽早解码(加载后,接收字节)
- 处理为 str
- 延迟编码(在保存之前,发送字节)
现在 utf-8 编码是最流行的,所以如果您没有其他要求,请使用它。
推荐阅读
- python - 有没有办法在子进程和主进程之间拥有“全局”变量,以便它在两个进程中都得到更新?
- javascript - 使用 NodeJS + express 实现无限滚动。附加 HTML 标记时遇到问题
- oauth-2.0 - 无需用户交互即可访问 Google API
- puppet - 使用螺栓重新启动
- .net - 请求需要很长时间才能远程到达服务器但在本地速度很快
- forms - 产品/服务订单的大表格或小表格
- reactjs - React.js:如何从代码中关闭 headlessui 披露模式?
- github - 添加模板后,有没有办法在 GitHub 中自定义新问题页面?
- python - Pandas groupby: date_from / date_to or date range 获取重叠间隔并对其进行优先级排序
- arrays - 扫描一维数组中的多个字符串数据