Google API 读取 python 3 中的 .p12 密钥

use*_*000 2 python encoding google-api google-api-python-client

UnicodeDecodeError我正在尝试将一些代码从 Python 2 移植到 3,但在读取 Google API .p12 服务密钥时抛出 a 。

with open('service_key.p12', 'r') as f:
    private_key = f.read()
Run Code Online (Sandbox Code Playgroud)

这是错误

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 1: invalid start byte

这段代码在 python 2.7 中工作正常,它在 python 3.4 中崩溃,我也已经pyOpenSSL==0.14安装了。

Bal*_*kos 5

在 python 3 中,您还必须使用“b”标志来打开二进制文件:

with open('service_key.p12', 'rb') as f:
    private_key = f.read()
Run Code Online (Sandbox Code Playgroud)

如此处所述,二进制 I/O 不会进行字符编码/解码。您收到 UnicodeDecodeError 是因为您使用了 Text I/O,它尝试将数据解码为 UTF-8,但您的数据不是有效的 UTF-8。