gpt4 book ai didi

python - 更新 Python 2.x->3.x 时对 Unicode 字符串行为进行故障排除

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:54 25 4
gpt4 key购买 nike

我在我的项目中使用的是 Python 2.7,因为我看到 Python 3.5 即将推出,所以我决定升级我的 Python 解释器。

我正在使用 base64 编码。由于字符串对象在新的 Python 版本中有所不同,我收到以下错误:

TypeError: 'str' 不支持缓冲区接口(interface)

我已经发现我必须在将字符串传递给此函数之前对其进行编码 ('string'.encode()),但是没有办法自动对字符串进行编码到 unicode 什么的?

最佳答案

在 Python 3 中,str 表示“unicode 文本”——无论您将其表示为 'mystring' 还是 u' mystring' 没有区别(后者只是为了促进与 Python 2 的移植/共存而被容忍)。

要指示二进制字节串,您可以使用b'mystring'

作为https://docs.python.org/3/library/base64.html把它,

This module provides functions for encoding binary data

(我强调的)——与文本(即 unicode)数据无关。作为合乎逻辑的结果,模块中的所有函数都期望或返回 byte 字符串。

不确定为什么不能在程序中直接使用 byte 字符串(相对于 text 字符串),但如果这是一个问题,最简单的方法是包装将 base64 模块中所需的函数转换为您自己的函数,以提供您需要的任何编码(文本 -> 字节)或解码(字节 -> 文本)。例如:

import base64

def b64encode(text, codec='utf8'):
return base64.b64encode(text.encode(codec))

然后在您的其余代码中使用此 b64encode,而不是直接使用 base64.b64encode -- 等等,解码部分。

关于python - 更新 Python 2.x->3.x 时对 Unicode 字符串行为进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com