无法在 Python 中使用 base64 编码数据

Posted

技术标签:

【中文标题】无法在 Python 中使用 base64 编码数据【英文标题】:Not able to use base64 encoded data in Python 【发布时间】:2020-03-21 21:01:12 【问题描述】:

所以我有这段代码,它使用 base_64 编码数据(图像数据),将其转换为图像并在其上运行 google vision (OCR)。但是 base_64 编码数据存在一些问题。即使认为它是正确的,它也会引发以下错误。

base64 编码字符串无效:数据字符数 (167737) 不能为 1 大于 4 的倍数

由于该字符串是 2000 行,我无法在此处输入,b'/9j/4af..........TE2f//Z' 这就是它的开始和结束方式,其中包含 167737 个字符。 那么我现在该怎么办,因为我无法将其转换回图像文件。只是为了测试代码,我正在使用一个我转换为 base_64 的图像并使用该字符串将其传递给另一个代码,该代码应该在对转换后的图像运行 ocr 后给我文本输出。

【问题讨论】:

你是怎么把图片转成base64的?看来转换没有正确完成。 我使用了 my_string = base64.b64encode(img_file.read()) ,我认为转换没有问题 您说“即使它是正确的”,但它显然不是:错误消息告诉您到底哪里出了问题。 Base-64 字符串始终是 4 个字符的倍数。可能是您无意中在末尾添加了一个字符(可能是换行符,这在编辑器中很难看到)。首先要尝试确保您的字符串不会太长。 也许google坚持要填充(编码字符的数量必须能被3整除,否则你必须添加填充字符'=')。 好吧,我试一次,你们是最棒的:) 【参考方案1】:

添加缺少的填充。

padding = len(data) % 4
if padding > 0:
    data += b'='* (4 - padding)
base64.b64decode(data)

【讨论】:

以上是关于无法在 Python 中使用 base64 编码数据的主要内容,如果未能解决你的问题,请参考以下文章

Python模块——base64

Python中的Base64编码的加密与解密

Python 中 base64 编码与解码

C# UTF-8 base64 编码在 PHP 中无法正确解码

python中base64编码与解码

在python中将base64编码的图像解码为原始图像